Merge "Revert "Refactor/clean up Overview Actions buttons"" into main
diff --git a/aconfig/launcher.aconfig b/aconfig/launcher.aconfig
index ace2210..5689c8a 100644
--- a/aconfig/launcher.aconfig
+++ b/aconfig/launcher.aconfig
@@ -55,3 +55,17 @@
description: "Enables launcher to listen to all transitions that include home activity"
bug: "306053414"
}
+
+flag {
+ name: "enable_taskbar_pinning"
+ namespace: "launcher"
+ description: "Enables taskbar pinning to allow user to switch between transient and persistent taskbar flavors."
+ bug: "270396583"
+}
+
+flag {
+ name: "enable_split_from_fullscreen_with_keyboard_shortcuts"
+ namespace: "launcher"
+ description: "Enables initiating split from a fullscreen app using keyboard shortcuts"
+ bug: "270394122"
+}
diff --git a/aconfig/launcher_search.aconfig b/aconfig/launcher_search.aconfig
index 87ccec5..fc79200 100644
--- a/aconfig/launcher_search.aconfig
+++ b/aconfig/launcher_search.aconfig
@@ -6,3 +6,10 @@
description: "Enables all Launcher features associated with private space."
bug: "306187906"
}
+
+flag {
+ name: "private_space_animation"
+ namespace: "launcher_search"
+ description: "This flag enables the animation of the Private Space container"
+ bug: "299294792"
+}
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_divider_popup_menu.xml b/quickstep/res/layout/taskbar_divider_popup_menu.xml
index 6fbb586..7f4f76c 100644
--- a/quickstep/res/layout/taskbar_divider_popup_menu.xml
+++ b/quickstep/res/layout/taskbar_divider_popup_menu.xml
@@ -57,7 +57,7 @@
android:paddingStart="12dp"
android:layout_weight="1"
android:fontFamily="@*android:string/config_bodyFontFamilyMedium"
- android:singleLine="true"
+ android:lines="1"
android:ellipsize="end"
android:textSize="14sp"
android:textColor="?android:attr/textColorPrimary"
diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml
index aa42f2f..ef885e8 100644
--- a/quickstep/res/values-eu/strings.xml
+++ b/quickstep/res/values-eu/strings.xml
@@ -115,7 +115,7 @@
<string name="taskbar_button_a11y" msgid="5241161324875094465">"Erabilerraztasuna"</string>
<string name="taskbar_button_back" msgid="8558862226461164514">"Atzera"</string>
<string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IMEaren etengailua"</string>
- <string name="taskbar_button_recents" msgid="7273376136216613134">"Azkenak"</string>
+ <string name="taskbar_button_recents" msgid="7273376136216613134">"Azkenaldikoak"</string>
<string name="taskbar_button_notifications" msgid="7471740351507357318">"Jakinarazpenak"</string>
<string name="taskbar_button_quick_settings" msgid="227662894293189391">"Ezarpen bizkorrak"</string>
<string name="taskbar_a11y_title" msgid="6432169809852243110">"Zereginen barra"</string>
diff --git a/quickstep/res/values/strings.xml b/quickstep/res/values/strings.xml
index dd9fc63..3dade66 100644
--- a/quickstep/res/values/strings.xml
+++ b/quickstep/res/values/strings.xml
@@ -235,6 +235,7 @@
<string name="toast_split_app_unsupported">Choose another app to use split screen</string>
<!-- Message shown when an action is blocked by a policy enforced by the app or the organization managing the device. [CHAR_LIMIT=NONE] -->
<string name="blocked_by_policy">This action isn\'t allowed by the app or your organization</string>
+ <string name="split_widgets_not_supported">Widgets not currently supported, please select another app</string>
<!-- ******* Skip tutorial dialog ******* -->
<!-- Title for the dialog that allows the user to skip the gesture navigation tutorial. [CHAR_LIMIT=40] -->
diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
index a832f75..0ef4541 100644
--- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
@@ -23,6 +23,7 @@
import static com.android.launcher3.LauncherAnimUtils.ROTATION_DRAWABLE_PERCENT;
import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
import static com.android.launcher3.taskbar.LauncherTaskbarUIController.SYSUI_SURFACE_PROGRESS_INDEX;
import static com.android.launcher3.taskbar.TaskbarManager.isPhoneButtonNavMode;
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y;
@@ -734,7 +735,7 @@
// TODO(b/244231596) we're getting the incorrect kidsMode value in small-screen
boolean isInKidsMode = mContext.isNavBarKidsModeActive();
- if (TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) {
+ if (ENABLE_TASKBAR_NAVBAR_UNIFICATION) {
NavButtonLayoutter navButtonLayoutter =
NavButtonLayoutFactory.Companion.getUiLayoutter(
dp, mNavButtonsView, mImeSwitcherButton,
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 1d949e2..820b996 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -30,12 +30,12 @@
import static com.android.launcher3.Flags.enableCursorHoverStates;
import static com.android.launcher3.Utilities.calculateTextHeight;
import static com.android.launcher3.Utilities.isRunningInTestHarness;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
import static com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate;
+import static com.android.launcher3.config.FeatureFlags.enableTaskbarPinning;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN;
import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING;
import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN;
-import static com.android.launcher3.taskbar.TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
import static com.android.launcher3.util.VibratorWrapper.EFFECT_CLICK;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE;
@@ -871,7 +871,7 @@
}
boolean shouldTreatAsTransient = DisplayController.isTransientTaskbar(this)
- || (ENABLE_TASKBAR_PINNING.get() && !isThreeButtonNav());
+ || (enableTaskbarPinning() && !isThreeButtonNav());
int extraHeightForTaskbarTooltips = enableCursorHoverStates()
? resources.getDimensionPixelSize(R.dimen.arrow_toast_arrow_height)
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
index 33ec5a3..a24cf4b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
@@ -18,6 +18,8 @@
import static android.view.KeyEvent.ACTION_UP;
import static android.view.KeyEvent.KEYCODE_BACK;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
+
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.RectF;
@@ -126,7 +128,7 @@
}
protected void onDestroy() {
- onDestroy(!TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION);
+ onDestroy(!ENABLE_TASKBAR_NAVBAR_UNIFICATION);
}
@Override
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
index f1bf4b1..1a34b7a 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
@@ -41,6 +41,7 @@
import com.android.launcher3.DeviceProfile
import com.android.launcher3.R
import com.android.launcher3.anim.AlphaUpdateListener
+import com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION
import com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate
import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController
import com.android.launcher3.util.DisplayController
@@ -253,7 +254,7 @@
visInsetsSizeForTappableElement
),
)
- if ((context.isGestureNav || TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ if ((context.isGestureNav || ENABLE_TASKBAR_NAVBAR_UNIFICATION)
&& provider.type == tappableElement()) {
provider.insetsSizeOverrides = insetsSizeOverrideForTappableElement
} else if (provider.type != systemGestures()) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
index ac9c4c7..c0b07e7 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
@@ -23,6 +23,7 @@
import static com.android.launcher3.BaseActivity.EVENT_DESTROYED;
import static com.android.launcher3.LauncherState.OVERVIEW;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
import static com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate;
import static com.android.launcher3.util.DisplayController.TASKBAR_NOT_DESTROYED_TAG;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
@@ -98,9 +99,6 @@
| ActivityInfo.CONFIG_SCREEN_LAYOUT
| ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
- public static final boolean ENABLE_TASKBAR_NAVBAR_UNIFICATION =
- Flags.enableTaskbarNavbarUnification();
-
private static final Uri USER_SETUP_COMPLETE_URI = Settings.Secure.getUriFor(
Settings.Secure.USER_SETUP_COMPLETE);
@@ -494,7 +492,7 @@
* and we are using a single window for taskbar and navbar.
*/
public static boolean isPhoneMode(DeviceProfile deviceProfile) {
- return TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION && deviceProfile.isPhone;
+ return ENABLE_TASKBAR_NAVBAR_UNIFICATION && deviceProfile.isPhone;
}
/**
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index 5be74be..e5c4c96 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -23,7 +23,7 @@
import static com.android.app.animation.Interpolators.INSTANT;
import static com.android.app.animation.Interpolators.LINEAR;
import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING;
+import static com.android.launcher3.config.FeatureFlags.enableTaskbarPinning;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_HIDE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE;
@@ -333,7 +333,7 @@
// that taskbar unstashes when going to 3 button mode (supportsVisualStashing() false).
boolean isManuallyStashedInApp = supportsVisualStashing()
&& !isTransientTaskbar
- && !ENABLE_TASKBAR_PINNING.get()
+ && !enableTaskbarPinning()
&& mPrefs.getBoolean(SHARED_PREFS_STASHED_KEY, DEFAULT_STASHED_PREF);
boolean isInSetup = !mActivity.isUserSetupComplete() || setupUIVisible;
updateStateForFlag(FLAG_STASHED_IN_APP_MANUAL, isManuallyStashedInApp);
@@ -365,7 +365,7 @@
* Returns whether the user can manually stash the taskbar based on the current device state.
*/
protected boolean supportsManualStashing() {
- if (ENABLE_TASKBAR_PINNING.get() && LauncherPrefs.get(mActivity).get(TASKBAR_PINNING)) {
+ if (enableTaskbarPinning() && LauncherPrefs.get(mActivity).get(TASKBAR_PINNING)) {
return false;
}
return supportsVisualStashing()
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
index a7461b7..81e4ad5 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
@@ -20,6 +20,7 @@
import static com.android.launcher3.Flags.enableCursorHoverStates;
import static com.android.launcher3.config.FeatureFlags.ENABLE_ALL_APPS_SEARCH_IN_TASKBAR;
+import static com.android.launcher3.config.FeatureFlags.enableTaskbarPinning;
import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR;
import android.content.Context;
@@ -45,7 +46,6 @@
import com.android.launcher3.Insettable;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.icons.ThemedIconDrawable;
import com.android.launcher3.model.data.FolderInfo;
@@ -128,7 +128,7 @@
int actualMargin = resources.getDimensionPixelSize(R.dimen.taskbar_icon_spacing);
int actualIconSize = mActivityContext.getDeviceProfile().taskbarIconSize;
- if (FeatureFlags.ENABLE_TASKBAR_PINNING.get()) {
+ if (enableTaskbarPinning()) {
DeviceProfile deviceProfile = mActivityContext.getTransientTaskbarDeviceProfile();
actualIconSize = deviceProfile.taskbarIconSize;
}
@@ -155,12 +155,11 @@
.inflate(R.layout.taskbar_all_apps_button, this, false);
mAllAppsButton.setIconDrawable(resources.getDrawable(
getAllAppsButton(isTransientTaskbar)));
- mAllAppsButton.setScaleX(mIsRtl ? -1 : 1);
mAllAppsButton.setPadding(mItemPadding, mItemPadding, mItemPadding, mItemPadding);
mAllAppsButton.setForegroundTint(
mActivityContext.getColor(R.color.all_apps_button_color));
- if (FeatureFlags.ENABLE_TASKBAR_PINNING.get()) {
+ if (enableTaskbarPinning()) {
mTaskbarDivider = (IconButtonView) LayoutInflater.from(context).inflate(
R.layout.taskbar_divider,
this, false);
@@ -177,7 +176,7 @@
@DrawableRes
private int getAllAppsButton(boolean isTransientTaskbar) {
boolean shouldSelectTransientIcon =
- (isTransientTaskbar || FeatureFlags.ENABLE_TASKBAR_PINNING.get())
+ (isTransientTaskbar || enableTaskbarPinning())
&& !mActivityContext.isThreeButtonNav();
if (ENABLE_ALL_APPS_SEARCH_IN_TASKBAR.get()) {
return shouldSelectTransientIcon
@@ -546,7 +545,7 @@
int iconLayoutBoundsWidth =
countExcludingQsb * (mItemMarginLeftRight * 2 + mIconTouchSize);
- if (FeatureFlags.ENABLE_TASKBAR_PINNING.get() && countExcludingQsb > 1) {
+ if (enableTaskbarPinning() && countExcludingQsb > 1) {
// We are removing 4 * mItemMarginLeftRight as there should be no space between
// All Apps icon, divider icon, and first app icon in taskbar
iconLayoutBoundsWidth -= mItemMarginLeftRight * 4;
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
index 0073dc8..0225de4 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
@@ -25,7 +25,8 @@
import static com.android.launcher3.Utilities.squaredHypot;
import static com.android.launcher3.anim.AnimatedFloat.VALUE;
import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION;
+import static com.android.launcher3.config.FeatureFlags.enableTaskbarPinning;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP;
import static com.android.launcher3.taskbar.TaskbarPinningController.PINNING_PERSISTENT;
import static com.android.launcher3.taskbar.TaskbarPinningController.PINNING_TRANSIENT;
@@ -214,13 +215,13 @@
mActivity.addOnDeviceProfileChangeListener(mDeviceProfileChangeListener);
- if (TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) {
+ if (ENABLE_TASKBAR_NAVBAR_UNIFICATION) {
// This gets modified in NavbarButtonsViewController, but the initial value it reads
// may be incorrect since it's state gets destroyed on taskbar recreate, so reset here
mTaskbarIconAlpha.get(ALPHA_INDEX_SMALL_SCREEN)
.animateToValue(isPhoneButtonNavMode(mActivity) ? 0 : 1).start();
}
- if (ENABLE_TASKBAR_PINNING.get()) {
+ if (enableTaskbarPinning()) {
mTaskbarView.addOnLayoutChangeListener(mTaskbarViewLayoutChangeListener);
}
}
@@ -233,7 +234,7 @@
}
public void onDestroy() {
- if (ENABLE_TASKBAR_PINNING.get()) {
+ if (enableTaskbarPinning()) {
mTaskbarView.removeOnLayoutChangeListener(mTaskbarViewLayoutChangeListener);
}
LauncherAppState.getInstance(mActivity).getModel().removeCallbacks(mModelCallbacks);
@@ -366,6 +367,10 @@
float allAppIconTranslateRange = mapRange(scale, transientTaskbarAllAppsOffset,
persistentTaskbarAllAppsOffset);
+ if (mIsRtl) {
+ allAppIconTranslateRange *= -1;
+ }
+
float halfIconCount = iconViews.length / 2.0f;
for (int iconIndex = 0; iconIndex < iconViews.length; iconIndex++) {
View iconView = iconViews[iconIndex];
@@ -671,7 +676,7 @@
// to avoid icons disappearing rather than fading out visually.
setter.setViewAlpha(child, 0, Interpolators.clampToProgress(LINEAR, 0.8f, 1f));
} else if ((isAllAppsButton && !FeatureFlags.ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT.get())
- || (isTaskbarDividerView && ENABLE_TASKBAR_PINNING.get())) {
+ || (isTaskbarDividerView && enableTaskbarPinning())) {
if (!isToHome
&& mIsHotseatIconOnTopWhenAligned
&& mIsStashed) {
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
index f5ba8f9..8092582 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
@@ -27,8 +27,10 @@
import android.util.Pair;
import android.view.View;
import android.widget.RemoteViews;
+import android.widget.Toast;
import android.window.SplashScreen;
+import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.model.data.ItemInfo;
@@ -56,8 +58,9 @@
return RemoteViews.startPendingIntent(hostView, pendingIntent,
remoteResponse.getLaunchOptions(view));
}
- if (mLauncher.getSplitToWorkspaceController().handleSecondWidgetSelectionForSplit(view,
- pendingIntent)) {
+ if (mLauncher.isSplitSelectionEnabled()) {
+ Toast.makeText(hostView.getContext(), R.string.split_widgets_not_supported,
+ Toast.LENGTH_SHORT).show();
return true;
}
Pair<Intent, ActivityOptions> options = remoteResponse.getLaunchOptions(view);
diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
index d102502..a36f501 100644
--- a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
@@ -19,6 +19,7 @@
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Color;
+import android.graphics.Insets;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.TextUtils;
@@ -26,6 +27,7 @@
import android.view.Display;
import android.view.View;
import android.view.Window;
+import android.view.WindowInsets;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -41,6 +43,7 @@
import com.android.quickstep.interaction.TutorialController.TutorialType;
import com.android.quickstep.util.TISBindHelper;
+import java.util.ArrayList;
import java.util.Arrays;
/** Shows the gesture interactive sandbox in full screen mode. */
@@ -101,8 +104,11 @@
correctUserOrientation();
}
mTISBindHelper = new TISBindHelper(this, this::onTISConnected);
+
+ initWindowInsets();
}
+
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -113,6 +119,42 @@
}
}
+ private void initWindowInsets() {
+ View root = findViewById(android.R.id.content);
+ root.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+ @Override
+ public void onLayoutChange(View v, int left, int top, int right, int bottom,
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ updateExclusionRects(root);
+ }
+ });
+
+ // Return CONSUMED if you don't want want the window insets to keep being
+ // passed down to descendant views.
+ root.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
+ @Override
+ public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
+ return WindowInsets.CONSUMED;
+ }
+ });
+ }
+
+ private void updateExclusionRects(View rootView) {
+ Insets gestureInsets = rootView.getRootWindowInsets()
+ .getInsets(WindowInsets.Type.systemGestures());
+ ArrayList<Rect> exclusionRects = new ArrayList<>();
+ // Add rect for left
+ exclusionRects.add(new Rect(0, 0, gestureInsets.left, rootView.getHeight()));
+ // Add rect for right
+ exclusionRects.add(new Rect(
+ rootView.getWidth() - gestureInsets.right,
+ 0,
+ rootView.getWidth(),
+ rootView.getHeight()
+ ));
+ rootView.setSystemGestureExclusionRects(exclusionRects);
+ }
+
/**
* Gesture animations are only in landscape for large screens and portrait for mobile. This
* method enforces the following flows:
diff --git a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java
index 3748a24..bdbdfd8 100644
--- a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java
+++ b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java
@@ -16,7 +16,7 @@
package com.android.quickstep.util;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS;
+import static com.android.launcher3.config.FeatureFlags.enableSplitFromFullscreenWithKeyboardShortcuts;
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported;
@@ -191,7 +191,7 @@
}
private boolean shouldIgnoreSecondSplitLaunch() {
- return (!ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.get()
+ return (!enableSplitFromFullscreenWithKeyboardShortcuts()
&& !FeatureFlags.enableSplitContextually()
&& !isDesktopModeSupported())
|| !mController.isSplitSelectActive();
diff --git a/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java b/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java
index f3fa86a..8f719d0 100644
--- a/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java
+++ b/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java
@@ -16,7 +16,7 @@
package com.android.quickstep.util;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS;
+import static com.android.launcher3.config.FeatureFlags.enableSplitFromFullscreenWithKeyboardShortcuts;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_LEFT_TOP;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_RIGHT_BOTTOM;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
@@ -75,7 +75,7 @@
@BinderThread
public void enterStageSplit(boolean leftOrTop) {
- if (!ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.get()) {
+ if (!enableSplitFromFullscreenWithKeyboardShortcuts()) {
return;
}
RecentsAnimationCallbacks callbacks = new RecentsAnimationCallbacks(
diff --git a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
index fce38e1..fe6ce46 100644
--- a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
@@ -159,8 +159,8 @@
// to other classes like PipTaskOrganizer / RecentsAnimationController to complete
// the cleanup.
mPipContentOverlay = new PipContentOverlay.PipAppIconOverlay(view.getContext(),
- mAppBounds, new IconProvider(context).getIcon(mActivityInfo),
- appIconSizePx);
+ mAppBounds, mDestinationBounds,
+ new IconProvider(context).getIcon(mActivityInfo), appIconSizePx);
final SurfaceControl.Transaction tx = new SurfaceControl.Transaction();
mPipContentOverlay.attach(tx, mLeash);
} else {
diff --git a/quickstep/src/com/android/quickstep/util/TransformParams.java b/quickstep/src/com/android/quickstep/util/TransformParams.java
index ca680db..ebcef30 100644
--- a/quickstep/src/com/android/quickstep/util/TransformParams.java
+++ b/quickstep/src/com/android/quickstep/util/TransformParams.java
@@ -16,13 +16,10 @@
package com.android.quickstep.util;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
-import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import android.util.FloatProperty;
import android.view.RemoteAnimationTarget;
-import com.android.app.animation.Interpolators;
-import com.android.launcher3.Utilities;
import com.android.quickstep.RemoteAnimationTargets;
import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
@@ -152,19 +149,7 @@
if (activityType == ACTIVITY_TYPE_HOME) {
mHomeBuilderProxy.onBuildTargetParams(builder, app, this);
} else {
- // Fade out translucent overlay.
- // TODO(b/303351074): use app.isNotInRecents directly once it is fixed.
- boolean isNotInRecents = app.taskInfo != null
- && (app.taskInfo.baseIntent.getFlags()
- & FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0;
- if (app.isTranslucent && isNotInRecents) {
- float progress = Utilities.boundToRange(getProgress(), 0, 1);
- builder.setAlpha(1 - Interpolators.DECELERATE_QUINT
- .getInterpolation(progress));
- } else {
- builder.setAlpha(getTargetAlpha());
- }
-
+ builder.setAlpha(getTargetAlpha());
proxy.onBuildTargetParams(builder, app, this);
}
} else {
diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt
index 00756ad..9c7f014 100644
--- a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt
+++ b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt
@@ -12,6 +12,7 @@
import androidx.test.runner.AndroidJUnit4
import com.android.launcher3.DeviceProfile
import com.android.launcher3.R
+import com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION
import com.android.launcher3.taskbar.TaskbarManager
import com.android.systemui.shared.rotation.RotationButton
import java.lang.IllegalStateException
@@ -59,7 +60,7 @@
@Test
fun getKidsLayoutter() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = true
val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
getLayoutter(
@@ -74,7 +75,7 @@
@Test
fun getSetupLayoutter() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = true
val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
getLayoutter(
@@ -89,7 +90,7 @@
@Test
fun getTaskbarNavLayoutter() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = true
val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
getLayoutter(
@@ -104,7 +105,7 @@
@Test(expected = IllegalStateException::class)
fun noValidLayoutForLargeScreenTaskbarNotPresent() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = false
getLayoutter(
isKidsMode = false,
@@ -117,7 +118,7 @@
@Test
fun getTaskbarPortraitLayoutter() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = false
val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
getLayoutter(
@@ -132,7 +133,7 @@
@Test
fun getTaskbarLandscapeLayoutter() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = false
setDeviceProfileLandscape()
val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
@@ -148,7 +149,7 @@
@Test
fun getTaskbarSeascapeLayoutter() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = false
setDeviceProfileLandscape()
val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
@@ -164,7 +165,7 @@
@Test(expected = IllegalStateException::class)
fun noValidLayoutForPhoneGestureNav() {
- assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION)
+ assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION)
mockDeviceProfile.isTaskbarPresent = false
getLayoutter(
isKidsMode = false,
diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
index 281516c..17fa253 100644
--- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
+++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
@@ -162,7 +162,6 @@
@Before
public void setUp() {
mLauncher.onTestStart();
- AbstractLauncherUiTest.waitForSetupWizardDismissal();
AbstractLauncherUiTest.onTestStart();
}
diff --git a/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java b/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java
index a5d7724..df88726 100644
--- a/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java
+++ b/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java
@@ -185,7 +185,7 @@
+ launcher.getNavigationModeMismatchError(false),
() -> launcher.getNavigationModeMismatchError(false) == null,
WAIT_TIME_MS, launcher);
- AbstractLauncherUiTest.checkDetectedLeaks(launcher, true);
+ AbstractLauncherUiTest.checkDetectedLeaks(launcher, false);
return true;
}
diff --git a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java
index f51f286..c4c95bc 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java
@@ -16,6 +16,8 @@
package com.android.quickstep;
import static com.android.launcher3.ui.TaplTestsLauncher3.initialize;
+import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
+import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -25,6 +27,7 @@
import com.android.launcher3.tapl.OverviewTaskMenu;
import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.util.rule.TestStabilityRule;
import org.junit.Before;
import org.junit.Test;
@@ -72,6 +75,7 @@
}
@Test
+ @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/288939273
public void testSplitTaskTapBothIconMenus() {
createAndLaunchASplitPair();
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
index 4075c55..ff8537b 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
@@ -16,6 +16,8 @@
package com.android.quickstep;
+import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
+import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
import static com.android.quickstep.TaskbarModeSwitchRule.Mode.PERSISTENT;
import static com.android.quickstep.TaskbarModeSwitchRule.Mode.TRANSIENT;
@@ -46,6 +48,7 @@
import com.android.launcher3.ui.TaplTestsLauncher3;
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
+import com.android.launcher3.util.rule.TestStabilityRule;
import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
import com.android.quickstep.views.RecentsView;
@@ -100,7 +103,6 @@
@Test
@NavigationModeSwitch
@PortraitLandscape
- @PlatinumTest(focusArea = "launcher")
public void testWorkspaceSwitchToAllApps() {
assertNotNull("switchToAllApps() returned null",
mLauncher.getWorkspace().switchToAllApps());
@@ -177,7 +179,6 @@
@Test
@NavigationModeSwitch
@PortraitLandscape
- @PlatinumTest(focusArea = "launcher")
public void testOverviewActions() throws Exception {
assumeFalse("Skipping Overview Actions tests for grid only overview",
mLauncher.isTablet() && mLauncher.isGridOnlyOverviewEnabled());
@@ -214,7 +215,6 @@
@NavigationModeSwitch
@PortraitLandscape
@ScreenRecord // b/238461765
- @PlatinumTest(focusArea = "launcher")
public void testSwitchToOverview() throws Exception {
startTestAppsWithCheck();
assertNotNull("Workspace.switchToOverview() returned null",
@@ -240,7 +240,6 @@
@Test
@NavigationModeSwitch
@PortraitLandscape
- @PlatinumTest(focusArea = "launcher")
public void testBackground() throws Exception {
startAppFast(CALCULATOR_APP_PACKAGE);
final LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
@@ -267,7 +266,6 @@
@Test
@NavigationModeSwitch
@PortraitLandscape
- @PlatinumTest(focusArea = "launcher")
public void testQuickSwitchFromApp() throws Exception {
startTestActivity(2);
startTestActivity(3);
@@ -297,7 +295,6 @@
@Test
@ScreenRecord // b/242163205
- @PlatinumTest(focusArea = "launcher")
@TaskbarModeSwitch(mode = PERSISTENT)
public void testQuickSwitchToPreviousAppForTablet() throws Exception {
assumeTrue(mLauncher.isTablet());
@@ -324,7 +321,6 @@
@Test
@NavigationModeSwitch
@PortraitLandscape
- @PlatinumTest(focusArea = "launcher")
public void testQuickSwitchFromHome() throws Exception {
startTestActivity(2);
mLauncher.goHome().quickSwitchToPreviousApp();
@@ -355,7 +351,7 @@
@PortraitLandscape
@TaskbarModeSwitch(mode = PERSISTENT)
@PlatinumTest(focusArea = "launcher")
- @ScreenRecord
+ @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/309820115
public void testOverviewForTablet() throws Exception {
assumeTrue(mLauncher.isTablet());
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index dc57332..dd966cc 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Deursoek jou tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Misluk: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privaat ruimte"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 4bfea99..bc2cc86 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ጡባዊዎን ይፈልጉ"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"አልተሳካም፦ <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"የግል ቦታ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 9cbfbfa..a3e5889 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"البحث في جهازك اللوحي"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"تعذَّر <xliff:g id="WHAT">%1$s</xliff:g>."</string>
<string name="private_space_label" msgid="2359721649407947001">"مساحة خاصة"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 6368312..f7c1b40 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"আপোনাৰ টেবলেটৰ বস্তু সন্ধান কৰক"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"বিফল: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ব্যক্তিগত স্পে’চ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 2ec448d..3b20be8 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Planşetinizi axtarın"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Alınmadı: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Şəxsi yer"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 81da8a8..4b7b663 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Nije uspelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privatni prostor"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 5bbac0f..4616b8e 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшэце"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Не ўдалося: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Прыватная вобласць"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index bdae209..c4be1f4 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Търсене в таблета ви"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Неуспешно: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Лично пространство"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 3a57581..a4dce63 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"আপনার ট্যাবলেটে সার্চ করুন"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"কাজটি করা যায়নি: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ব্যক্তিগত স্পেস"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index e453982..9d7419f 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privatan prostor"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b03b4ec..fedea5d 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Cerca a la tauleta"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espai privat"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index a39a1d5..c721f56 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Vyhledávání na tabletu"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Selhalo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Soukromý prostor"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index faebb41..5c0423a 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søg på din tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Mislykket: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privat rum"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 61e4859..40f1c74 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Auf dem Tablet suchen"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Fehler: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privater Bereich"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b98ae4f..cc5d0bd 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Αναζήτηση στο tablet σας"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Αποτυχία: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Ιδιωτικός χώρος"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 8e55910..9b0cde6 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index c5e5caf..c78355a 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 8e55910..9b0cde6 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 8e55910..9b0cde6 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 1ad2059..9aaf4d2 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index b8d213b..3d830c4 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Busca en tu tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espacio privado"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index c13ce1a..cb35617 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Buscar en tu tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Se ha producido un error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espacio privado"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 76bd494..60a0a04 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Otsimine tahvelarvutist"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Nurjus: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privaatne ruum"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index d73c885..4f4645f 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Bilatu tabletan"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Huts egin du: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Eremu pribatua"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index fc42f54..3129c10 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"جستجوی رایانه لوحی"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ناموفق بود: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"فضای خصوصی"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index a567eba..9147b36 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Hae tabletilta"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Epäonnistui: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Yksityinen tila"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a6f5053..b739c95 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espace privé"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 9e09a5c..eca5f51 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espace privé"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 41c30c2..82edb6d 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Facer buscas na tableta"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Erro: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espazo privado"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 71aebc4..ca79a3f 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"તમારું ટૅબ્લેટ શોધો"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"નિષ્ફળ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ખાનગી સ્પેસ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index a9f9ecd..d1ea837 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"अपने टैबलेट में खोजें"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"पूरा नहीं हुआ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"प्राइवेट स्पेस"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 757f335..90f36b9 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretraživanje tableta"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privatni prostor"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 6c43388..bae2c81 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Keresés a táblagépen"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Sikertelen: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privát terület"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 6eae2b6..76857db 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Որոնում պլանշետում"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Չհաջողվեց կատարել գործողությունը (<xliff:g id="WHAT">%1$s</xliff:g>)"</string>
<string name="private_space_label" msgid="2359721649407947001">"Անձնական տարածք"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index a47ec3b..8301a5d 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Telusuri di tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Gagal: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Ruang pribadi"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 9e9be03..5bd6356 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Leita í spjaldtölvunni"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Mistókst: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Einkarými"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 407a492..dd385c3 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Ricerche sul tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Operazione non riuscita: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Spazio privato"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index e87cfaf..1eb4f4e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"חיפוש בטאבלט"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"הפעולה נכשלה: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"מרחב פרטי"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e8a72eb..35d97a9 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"タブレットを探す"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"失敗: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"プライベート スペース"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index ab6e962..b4af601 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ძიება თქვენს ტაბლეტში"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ვერ მოხერხდა: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"პირადი სივრცე"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index c18a43f..9c15ca4 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Планшеттен іздеу"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Қате шықты: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Жеке бөлме"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 4aa1878..363690c 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ស្វែងរកក្នុងថេប្លេតរបស់អ្នក"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"បានបរាជ័យ៖ <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"បន្ទប់ឯកជន"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 138e1b3..88aeab5 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಹುಡುಕಿ"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ವಿಫಲವಾಗಿದೆ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ಖಾಸಗಿ ಸ್ಪೇಸ್"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 7803d09..1f92b4d 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"태블릿 속 항목 검색"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"실패: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"비공개 스페이스"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index a9da5b8..aa24cdd 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Планшетте издөө"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Аткарылган жок: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Жеке чөйрө"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 1dc9a91..dfa4d48 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ຊອກຫາແທັບເລັດຂອງທ່ານ"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ບໍ່ສຳເລັດ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ພື້ນທີ່ສ່ວນຕົວ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 1666f47..d8e4b0c 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Paieška planšetiniame kompiuteryje"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Nepavyko: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privati erdvė"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 420d3d6..f2b63c2 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Meklēšana planšetdatorā"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Neizdevās: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privātā telpa"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 841aba7..5b7973a 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пребарување низ таблетот"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Не успеа: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Приватен простор"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index df39e74..5507eb7 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"നിങ്ങളുടെ ടാബ്ലെറ്റിലുള്ളവ തിരയുക"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"പരാജയപ്പെട്ടു: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"സ്വകാര്യ സ്പേസ്"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index ad89209..2cc2ae3 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Таблетнаасаа хайх"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Амжилтгүй болсон: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Хувийн орон зай"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index a14459c..c0beed2 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"तुमच्या टॅबलेटमध्ये शोधा"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"हे करता आले नाही: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"खाजगी स्पेस"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 75a50b0..8ec5ba0 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Cari pada tablet anda"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Gagal: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Ruang peribadi"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index a4d2417..1463620 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"သင့်တက်ဘလက်ကို ရှာခြင်း"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"မအောင်မြင်ပါ− <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"သီးသန့်ချတ်ခန်း"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index aea53fa..90ff503 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søk på nettbrettet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Mislyktes: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privat område"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index b5760d7..e02bf66 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"आफ्नो ट्याबलेटमा खोज्नुहोस्"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"कार्य पूरा गर्न सकिएन: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"निजी स्पेस"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 7f362ec..f143c1e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Zoeken op je tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Mislukt: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privéruimte"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 406b176..4bf50fa 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ଆପଣଙ୍କ ଟାବଲେଟରେ ସନ୍ଧାନ କରନ୍ତୁ"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ବିଫଳ ହୋଇଛି: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ପ୍ରାଇଭେଟ ସ୍ପେସ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 837eba0..0d9848e 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ਆਪਣਾ ਟੈਬਲੈੱਟ ਖੋਜੋ"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ਇਹ ਕਾਰਵਾਈ ਅਸਫਲ ਹੋਈ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ਨਿੱਜੀ ਸਪੇਸ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 24f09f9..faf5dfa 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Przeszukuj tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Niepowodzenie: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Obszar prywatny"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0febbd1..1b3a8de 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pesquise no tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Falhou: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espaço privado"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index ad8e0c0..ec0c02c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pesquisar no tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Falha: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Espaço particular"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 46f5b40..648f7e9 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Caută pe tabletă"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Eșuare: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Spațiu privat"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 79e1781..5918868 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Поиск на планшете"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Не удалось выполнить действие (<xliff:g id="WHAT">%1$s</xliff:g>)."</string>
<string name="private_space_label" msgid="2359721649407947001">"Личное пространство"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 72c0491..f7cd68b 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ඔබගේ ටැබ්ලටය සොයන්න"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"අසාර්ථකයි: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"පෞද්ගලික ඉඩ"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index bf01b32..b519127 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Vyhľadávanie v tablete"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Zlyhalo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Súkromný priestor"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 52d8584..78c8b55 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Iskanje po tabličnem računalniku"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Ni uspelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Zasebni prostor"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 2c072ee..95ec874 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Kërko në tabletin tënd"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Dështoi: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Hapësira private"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index ee66f12..d58af08 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Претражите таблет"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Није успело: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Приватни простор"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 57fb8be..9cf1001 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Sök på surfplattan"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Misslyckades: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Privat rum"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index b735318..1797dd3 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tafuta kwenye kompyuta kibao yako"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Hitilafu: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Nafasi ya faragha"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 85a7a66..c81f62a 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"உங்கள் டேப்லெட்டில் தேடுதல்"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"தோல்வி: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"தனிப்பட்ட சேமிப்பிடம்"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index ee4d7ca..6cfdd0b 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"మీ టాబ్లెట్లో సెర్చ్ చేయండి"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"విఫలమైంది: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"ప్రైవేట్ స్పేస్"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 047e2b1..4bfccaa 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ค้นหาในแท็บเล็ต"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ไม่สำเร็จ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"พื้นที่ส่วนตัว"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index e17abc8..05af221 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Maghanap sa iyong tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Hindi nagawa: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Pribadong space"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9994adf..ec24a9d 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tabletinizde arama yapma"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Başarısız: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Gizli alan"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a638609..c7b2f7f 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшеті"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Не вдалося <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Приватний простір"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 92b8b41..857cf5b 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"اپنے ٹیبلیٹ پر تلاش کریں"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"ناکام ہو گيا: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"نجی اسپیس"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 2e3bfed..972a246 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Planshetingizni qidiring"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Xato: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Shaxsiy xona"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 85f48a6..f720c8d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tìm kiếm trong máy tính bảng của bạn"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Không thực hiện được thao tác: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Không gian riêng tư"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 69f6bcf..8c5bac0 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"平板电脑内搜索"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"失败:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"私密空间"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 1af7766..02225a7 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"搜尋平板電腦內容"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"操作失敗:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"私人空間"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 47d6f14..4483de4 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"搜尋平板電腦內容"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"失敗:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"私人空間"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 4871d8f..580a3be 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -176,4 +176,6 @@
<string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Sesha ithebulethi yakho"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Yehlulekile: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
<string name="private_space_label" msgid="2359721649407947001">"Isikhala esiyimfihlo"</string>
+ <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+ <skip />
</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 1a960f5..3682830 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -261,7 +261,7 @@
<!-- Responsive grids attributes -->
<declare-styleable name="ResponsiveSpec">
- <attr name="specType" format="integer">
+ <attr name="dimensionType" format="integer">
<enum name="height" value="0" />
<enum name="width" value="1" />
</attr>
@@ -273,22 +273,22 @@
</declare-styleable>
<declare-styleable name="WorkspaceSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
<declare-styleable name="FolderSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
<declare-styleable name="AllAppsSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
<declare-styleable name="HotseatSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 59f3f0d..fed031b 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -118,10 +118,10 @@
// Responsive grid
private final boolean mIsResponsiveGrid;
- private CalculatedResponsiveSpec mResponsiveWidthSpec;
- private CalculatedResponsiveSpec mResponsiveHeightSpec;
- private CalculatedResponsiveSpec mAllAppsResponsiveWidthSpec;
- private CalculatedResponsiveSpec mAllAppsResponsiveHeightSpec;
+ private CalculatedResponsiveSpec mResponsiveWorkspaceWidthSpec;
+ private CalculatedResponsiveSpec mResponsiveWorkspaceHeightSpec;
+ private CalculatedResponsiveSpec mResponsiveAllAppsWidthSpec;
+ private CalculatedResponsiveSpec mResponsiveAllAppsHeightSpec;
private CalculatedResponsiveSpec mResponsiveFolderWidthSpec;
private CalculatedResponsiveSpec mResponsiveFolderHeightSpec;
private CalculatedHotseatSpec mResponsiveHotseatSpec;
@@ -591,7 +591,8 @@
if (mIsResponsiveGrid) {
int availableResponsiveWidth =
availableWidthPx - (isVerticalBarLayout() ? hotseatBarSizePx : 0);
- int numColumns = getPanelCount() * inv.numColumns;
+ int numWorkspaceColumns = getPanelCount() * inv.numColumns;
+ int numAllAppsColumns = getPanelCount() * inv.numAllAppsColumns;
// don't use availableHeightPx because it subtracts mInsets.bottom
int availableResponsiveHeight = heightPx - mInsets.top
- (isVerticalBarLayout() ? 0 : hotseatBarSizePx);
@@ -601,21 +602,21 @@
new ResourceHelper(context,
isTwoPanels ? inv.workspaceSpecsTwoPanelId : inv.workspaceSpecsId),
ResponsiveSpecType.Workspace);
- mResponsiveWidthSpec = workspaceSpecs.getCalculatedSpec(responsiveAspectRatio,
- DimensionType.WIDTH, numColumns, availableResponsiveWidth);
- mResponsiveHeightSpec = workspaceSpecs.getCalculatedSpec(responsiveAspectRatio,
+ mResponsiveWorkspaceWidthSpec = workspaceSpecs.getCalculatedSpec(responsiveAspectRatio,
+ DimensionType.WIDTH, numWorkspaceColumns, availableResponsiveWidth);
+ mResponsiveWorkspaceHeightSpec = workspaceSpecs.getCalculatedSpec(responsiveAspectRatio,
DimensionType.HEIGHT, inv.numRows, availableResponsiveHeight);
ResponsiveSpecsProvider allAppsSpecs = ResponsiveSpecsProvider.create(
new ResourceHelper(context,
isTwoPanels ? inv.allAppsSpecsTwoPanelId : inv.allAppsSpecsId),
ResponsiveSpecType.AllApps);
- mAllAppsResponsiveWidthSpec = allAppsSpecs.getCalculatedSpec(responsiveAspectRatio,
- DimensionType.WIDTH, numColumns, availableWidthPx,
- mResponsiveWidthSpec);
- mAllAppsResponsiveHeightSpec = allAppsSpecs.getCalculatedSpec(responsiveAspectRatio,
+ mResponsiveAllAppsWidthSpec = allAppsSpecs.getCalculatedSpec(responsiveAspectRatio,
+ DimensionType.WIDTH, numAllAppsColumns, availableWidthPx,
+ mResponsiveWorkspaceWidthSpec);
+ mResponsiveAllAppsHeightSpec = allAppsSpecs.getCalculatedSpec(responsiveAspectRatio,
DimensionType.HEIGHT, inv.numRows, heightPx - mInsets.top,
- mResponsiveHeightSpec);
+ mResponsiveWorkspaceHeightSpec);
ResponsiveSpecsProvider folderSpecs = ResponsiveSpecsProvider.create(
new ResourceHelper(context,
@@ -623,12 +624,12 @@
ResponsiveSpecType.Folder);
mResponsiveFolderWidthSpec = folderSpecs.getCalculatedSpec(responsiveAspectRatio,
DimensionType.WIDTH, inv.numFolderColumns,
- mResponsiveWidthSpec.getAvailableSpace(),
- mResponsiveWidthSpec);
+ mResponsiveWorkspaceWidthSpec.getAvailableSpace(),
+ mResponsiveWorkspaceWidthSpec);
mResponsiveFolderHeightSpec = folderSpecs.getCalculatedSpec(responsiveAspectRatio,
DimensionType.HEIGHT, inv.numFolderRows,
- mResponsiveHeightSpec.getAvailableSpace(),
- mResponsiveHeightSpec);
+ mResponsiveWorkspaceHeightSpec.getAvailableSpace(),
+ mResponsiveWorkspaceHeightSpec);
}
desiredWorkspaceHorizontalMarginPx = getHorizontalMarginPx(inv, res);
@@ -758,7 +759,7 @@
private int getHorizontalMarginPx(InvariantDeviceProfile idp, Resources res) {
if (mIsResponsiveGrid) {
- return mResponsiveWidthSpec.getStartPaddingPx();
+ return mResponsiveWorkspaceWidthSpec.getStartPaddingPx();
}
if (isVerticalBarLayout()) {
@@ -774,8 +775,8 @@
InvariantDeviceProfile inv,
int extraSpace) {
if (mIsResponsiveGrid) {
- workspaceTopPadding = mResponsiveHeightSpec.getStartPaddingPx();
- workspaceBottomPadding = mResponsiveHeightSpec.getEndPaddingPx();
+ workspaceTopPadding = mResponsiveWorkspaceHeightSpec.getStartPaddingPx();
+ workspaceBottomPadding = mResponsiveWorkspaceHeightSpec.getEndPaddingPx();
} else if (mIsScalableGrid && inv.devicePaddingId != INVALID_RESOURCE_HANDLE) {
// Paddings were created assuming no scaling, so we first unscale the extra space.
int unscaledExtraSpace = (int) (extraSpace / cellScaleToFit);
@@ -871,8 +872,8 @@
int verticalSpacePx = 0;
if (mIsResponsiveGrid) {
- horizontalSpacePx = mResponsiveWidthSpec.getGutterPx();
- verticalSpacePx = mResponsiveHeightSpec.getGutterPx();
+ horizontalSpacePx = mResponsiveWorkspaceWidthSpec.getGutterPx();
+ verticalSpacePx = mResponsiveWorkspaceHeightSpec.getGutterPx();
} else if (mIsScalableGrid) {
horizontalSpacePx = pxFromDp(idp.borderSpaces[mTypeIndex].x, mMetrics, scale);
verticalSpacePx = pxFromDp(idp.borderSpaces[mTypeIndex].y, mMetrics, scale);
@@ -1017,12 +1018,16 @@
+ cellLayoutPaddingPx.left + cellLayoutPaddingPx.right;
}
- private int getNormalizedIconDrawablePadding() {
+ private int getNormalizedIconDrawablePadding(int iconSizePx, int iconDrawablePadding) {
// TODO(b/235886078): workaround needed because of this bug
// Icons are 10% larger on XML than their visual size,
// so remove that extra space to get labels closer to the correct padding
int iconVisibleSizePx = (int) Math.round(ICON_VISIBLE_AREA_FACTOR * iconSizePx);
- return Math.max(0, mIconDrawablePaddingOriginalPx - ((iconSizePx - iconVisibleSizePx) / 2));
+ return Math.max(0, iconDrawablePadding - ((iconSizePx - iconVisibleSizePx) / 2));
+ }
+
+ private int getNormalizedIconDrawablePadding() {
+ return getNormalizedIconDrawablePadding(iconSizePx, mIconDrawablePaddingOriginalPx);
}
private int getNormalizedFolderChildDrawablePaddingPx(int textHeight) {
@@ -1055,8 +1060,8 @@
cellLayoutBorderSpacePx = getCellLayoutBorderSpace(inv, scale);
if (mIsResponsiveGrid) {
- cellWidthPx = mResponsiveWidthSpec.getCellSizePx();
- cellHeightPx = mResponsiveHeightSpec.getCellSizePx();
+ cellWidthPx = mResponsiveWorkspaceWidthSpec.getCellSizePx();
+ cellHeightPx = mResponsiveWorkspaceHeightSpec.getCellSizePx();
if (cellWidthPx < iconSizePx) {
// get a smaller icon size
@@ -1160,7 +1165,7 @@
// All apps
if (mIsResponsiveGrid) {
- updateAllAppsWithResponsiveMeasures();
+ updateAllAppsWithResponsiveMeasures(res);
} else {
updateAllAppsIconSize(scale, res);
}
@@ -1259,24 +1264,61 @@
}
}
- private void updateAllAppsWithResponsiveMeasures() {
- allAppsIconSizePx = iconSizePx;
- allAppsIconTextSizePx = iconTextSizePx;
- allAppsIconDrawablePaddingPx = iconDrawablePaddingPx;
-
+ private void updateAllAppsWithResponsiveMeasures(Resources res) {
allAppsBorderSpacePx = new Point(
- mAllAppsResponsiveWidthSpec.getGutterPx(),
- mAllAppsResponsiveHeightSpec.getGutterPx()
+ mResponsiveAllAppsWidthSpec.getGutterPx(),
+ mResponsiveAllAppsHeightSpec.getGutterPx()
);
- allAppsCellHeightPx = mAllAppsResponsiveHeightSpec.getCellSizePx()
- + mAllAppsResponsiveHeightSpec.getGutterPx();
- allAppsCellWidthPx = mAllAppsResponsiveWidthSpec.getCellSizePx();
+ allAppsCellHeightPx = mResponsiveAllAppsHeightSpec.getCellSizePx()
+ + mResponsiveAllAppsHeightSpec.getGutterPx();
+ allAppsCellWidthPx = mResponsiveAllAppsWidthSpec.getCellSizePx();
// This workaround is needed to align AllApps icons with Workspace icons
// since AllApps doesn't have borders between cells
int halfBorder = allAppsBorderSpacePx.x / 2;
- allAppsPadding.left = mAllAppsResponsiveWidthSpec.getStartPaddingPx() - halfBorder;
- allAppsPadding.right = mAllAppsResponsiveWidthSpec.getEndPaddingPx() - halfBorder;
+ allAppsPadding.left = mResponsiveAllAppsWidthSpec.getStartPaddingPx() - halfBorder;
+ allAppsPadding.right = mResponsiveAllAppsWidthSpec.getEndPaddingPx() - halfBorder;
+
+ // TODO(b/287975993): Remove this after icon size is extracted to responsive grid
+ // Copy icon size from the workspace when spec is matchWorkspace or
+ // use the default all apps icon size
+ if (mResponsiveAllAppsHeightSpec.isCellSizeMatchWorkspace()
+ || mResponsiveAllAppsWidthSpec.isCellSizeMatchWorkspace()) {
+ allAppsIconSizePx = iconSizePx;
+ allAppsIconTextSizePx = iconTextSizePx;
+ allAppsIconDrawablePaddingPx = iconDrawablePaddingPx;
+ } else {
+ allAppsIconSizePx = pxFromDp(inv.allAppsIconSize[mTypeIndex], mMetrics);
+ allAppsIconTextSizePx = pxFromSp(inv.allAppsIconTextSize[mTypeIndex], mMetrics);
+ allAppsIconDrawablePaddingPx = res.getDimensionPixelSize(
+ R.dimen.all_apps_icon_drawable_padding);
+ allAppsIconDrawablePaddingPx = getNormalizedIconDrawablePadding(allAppsIconSizePx,
+ allAppsIconDrawablePaddingPx);
+ }
+
+ // Reduce the size of the app icon if it doesn't fit
+ if (allAppsCellWidthPx < allAppsIconSizePx) {
+ // get a smaller icon size
+ allAppsIconSizePx = mIconSizeSteps.getIconSmallerThan(allAppsCellWidthPx);
+ }
+
+ CellContentDimensions cellContentDimensions = new CellContentDimensions(
+ allAppsIconSizePx, allAppsIconDrawablePaddingPx, (int) allAppsIconTextSizePx);
+
+ if (allAppsCellHeightPx < cellContentDimensions.getCellContentHeight()) {
+ if (isVerticalBarLayout()) {
+ if (allAppsCellHeightPx < iconSizePx) {
+ cellContentDimensions.setIconSizePx(
+ mIconSizeSteps.getIconSmallerThan(allAppsCellHeightPx));
+ }
+ } else {
+ cellContentDimensions.resizeToFitCellHeight(allAppsCellHeightPx,
+ mIconSizeSteps);
+ }
+ allAppsIconSizePx = cellContentDimensions.getIconSizePx();
+ allAppsIconDrawablePaddingPx = cellContentDimensions.getIconDrawablePaddingPx();
+ allAppsIconTextSizePx = cellContentDimensions.getIconTextSizePx();
+ }
}
/**
@@ -1546,15 +1588,17 @@
Rect padding = workspacePadding;
if (isVerticalBarLayout()) {
if (mIsResponsiveGrid) {
- padding.top = mResponsiveHeightSpec.getStartPaddingPx();
+ padding.top = mResponsiveWorkspaceHeightSpec.getStartPaddingPx();
padding.bottom = Math.max(0,
- mResponsiveHeightSpec.getEndPaddingPx() - mInsets.bottom);
+ mResponsiveWorkspaceHeightSpec.getEndPaddingPx() - mInsets.bottom);
if (isSeascape()) {
- padding.left = hotseatBarSizePx + mResponsiveWidthSpec.getEndPaddingPx();
- padding.right = mResponsiveWidthSpec.getStartPaddingPx();
+ padding.left =
+ hotseatBarSizePx + mResponsiveWorkspaceWidthSpec.getEndPaddingPx();
+ padding.right = mResponsiveWorkspaceWidthSpec.getStartPaddingPx();
} else {
- padding.left = mResponsiveWidthSpec.getStartPaddingPx();
- padding.right = hotseatBarSizePx + mResponsiveWidthSpec.getEndPaddingPx();
+ padding.left = mResponsiveWorkspaceWidthSpec.getStartPaddingPx();
+ padding.right =
+ hotseatBarSizePx + mResponsiveWorkspaceWidthSpec.getEndPaddingPx();
}
} else {
padding.top = 0;
@@ -2076,12 +2120,14 @@
writer.println(prefix + pxToDpStr("getCellLayoutHeight()", getCellLayoutHeight()));
writer.println(prefix + pxToDpStr("getCellLayoutWidth()", getCellLayoutWidth()));
if (mIsResponsiveGrid) {
- writer.println(prefix + "\tmResponsiveHeightSpec:" + mResponsiveHeightSpec.toString());
- writer.println(prefix + "\tmResponsiveWidthSpec:" + mResponsiveWidthSpec.toString());
- writer.println(prefix + "\tmAllAppsResponsiveHeightSpec:"
- + mAllAppsResponsiveHeightSpec.toString());
- writer.println(prefix + "\tmAllAppsResponsiveWidthSpec:"
- + mAllAppsResponsiveWidthSpec.toString());
+ writer.println(prefix + "\tmResponsiveWorkspaceHeightSpec:"
+ + mResponsiveWorkspaceHeightSpec.toString());
+ writer.println(prefix + "\tmResponsiveWorkspaceWidthSpec:"
+ + mResponsiveWorkspaceWidthSpec.toString());
+ writer.println(prefix + "\tmResponsiveAllAppsHeightSpec:"
+ + mResponsiveAllAppsHeightSpec.toString());
+ writer.println(prefix + "\tmResponsiveAllAppsWidthSpec:"
+ + mResponsiveAllAppsWidthSpec.toString());
writer.println(prefix + "\tmResponsiveFolderHeightSpec:" + mResponsiveFolderHeightSpec);
writer.println(prefix + "\tmResponsiveFolderWidthSpec:" + mResponsiveFolderWidthSpec);
writer.println(prefix + "\tmResponsiveHotseatSpec:" + mResponsiveHotseatSpec);
diff --git a/src/com/android/launcher3/ExtendedEditText.java b/src/com/android/launcher3/ExtendedEditText.java
index 8ff030e..8eab3e3 100644
--- a/src/com/android/launcher3/ExtendedEditText.java
+++ b/src/com/android/launcher3/ExtendedEditText.java
@@ -90,14 +90,23 @@
/**
* Synchronously shows the soft input method.
*
- * @param shouldFocus whether this EditText should also request focus.
- * @return true if the keyboard is shown correctly and focus is given to this view (if
- * applicable).
+ * @return true if the keyboard is shown correctly and focus is given to this view.
*/
- public boolean showKeyboard(boolean shouldFocus) {
+ public boolean showKeyboard() {
onKeyboardShown();
- boolean focusResult = !shouldFocus || requestFocus();
- return focusResult && showSoftInputInternal();
+ return requestFocus() && showSoftInputInternal();
+ }
+
+ /**
+ * Requests the framework to show the keyboard in order to ensure that an already registered
+ * controlled keyboard animation is triggered correctly.
+ * Must NEVER be called in any other case than to trigger a pre-registered controlled animation.
+ */
+ public void requestShowKeyboardForControlledAnimation() {
+ // We don't log the keyboard state, as that must happen only after the controlled animation
+ // has completed.
+ // We also must not request focus, as this triggers unwanted side effects.
+ showSoftInputInternal();
}
public void hideKeyboard() {
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index dd03035..5a0cf9d 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1590,6 +1590,9 @@
if (getStateManager().isInStableState(ALL_APPS)) {
getStateManager().goToState(NORMAL, alreadyOnHome);
} else {
+ if (mWorkspace.isOverlayShown()) {
+ mOverlayManager.hideOverlay(/* animate */true);
+ }
AbstractFloatingView.closeAllOpenViews(this);
getStateManager().goToState(ALL_APPS, true /* animated */,
new AnimationSuccessListener() {
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index 5b4d2b8..095cfa9 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -1046,6 +1046,11 @@
return getActiveAppsRecyclerView();
}
+ /** The current focus change listener in the search container. */
+ public OnFocusChangeListener getSearchFocusChangeListener() {
+ return mAH.get(AdapterHolder.SEARCH).mOnFocusChangeListener;
+ }
+
/** The current apps recycler view in the container. */
private AllAppsRecyclerView getActiveAppsRecyclerView() {
if (!mUsingTabs || isPersonalTab()) {
@@ -1442,6 +1447,7 @@
final AlphabeticalAppsList<T> mAppsList;
final Rect mPadding = new Rect();
AllAppsRecyclerView mRecyclerView;
+ private OnFocusChangeListener mOnFocusChangeListener;
AdapterHolder(int type, AlphabeticalAppsList<T> appsList) {
mType = type;
@@ -1465,7 +1471,8 @@
onInitializeRecyclerView(mRecyclerView);
FocusedItemDecorator focusedItemDecorator = new FocusedItemDecorator(mRecyclerView);
mRecyclerView.addItemDecoration(focusedItemDecorator);
- mAdapter.setIconFocusListener(focusedItemDecorator.getFocusListener());
+ mOnFocusChangeListener = focusedItemDecorator.getFocusListener();
+ mAdapter.setIconFocusListener(mOnFocusChangeListener);
applyPadding();
}
diff --git a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
index ecbc7a9..4427a49 100644
--- a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
+++ b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
@@ -160,7 +160,7 @@
* Focuses the search field to handle key events.
*/
public void focusSearchField() {
- mInput.showKeyboard(true /* shouldFocus */);
+ mInput.showKeyboard();
}
/**
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 73861c1..51eb363 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -23,6 +23,7 @@
import static com.android.launcher3.uioverrides.flags.FlagsFactory.getDebugFlag;
import static com.android.launcher3.uioverrides.flags.FlagsFactory.getIntFlag;
import static com.android.launcher3.uioverrides.flags.FlagsFactory.getReleaseFlag;
+import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification;
import android.view.ViewConfiguration;
@@ -217,12 +218,19 @@
public static final BooleanFlag ENABLE_TRANSIENT_TASKBAR = getDebugFlag(270395798,
"ENABLE_TRANSIENT_TASKBAR", ENABLED, "Enables transient taskbar.");
+ public static final boolean ENABLE_TASKBAR_NAVBAR_UNIFICATION =
+ enableTaskbarNavbarUnification();
+
// Aconfig migration complete for ENABLE_TASKBAR_NO_RECREATION.
public static final BooleanFlag ENABLE_TASKBAR_NO_RECREATION = getDebugFlag(299193589,
"ENABLE_TASKBAR_NO_RECREATION", DISABLED,
"Enables taskbar with no recreation from lifecycle changes of TaskbarActivityContext.");
public static boolean enableTaskbarNoRecreate() {
- return ENABLE_TASKBAR_NO_RECREATION.get() || Flags.enableTaskbarNoRecreate();
+ return ENABLE_TASKBAR_NO_RECREATION.get() || Flags.enableTaskbarNoRecreate()
+ // Task bar pinning and task bar nav bar unification are both dependent on
+ // ENABLE_TASKBAR_NO_RECREATION. We want to turn ENABLE_TASKBAR_NO_RECREATION on
+ // when either of the dependent features is turned on.
+ || ENABLE_TASKBAR_PINNING.get() || ENABLE_TASKBAR_NAVBAR_UNIFICATION;
}
// TODO(Block 16): Clean up flags
@@ -279,11 +287,16 @@
"Enables haptic hint when long pressing on the bottom bar nav handle.");
// TODO(Block 17): Clean up flags
- public static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583,
+ // Aconfig migration complete for ENABLE_TASKBAR_PINNING.
+ private static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583,
"ENABLE_TASKBAR_PINNING", TEAMFOOD,
"Enables taskbar pinning to allow user to switch between transient and persistent "
+ "taskbar flavors");
+ public static boolean enableTaskbarPinning() {
+ return ENABLE_TASKBAR_PINNING.get() || Flags.enableTaskbarPinning();
+ }
+
public static final BooleanFlag MOVE_STARTUP_DATA_TO_DEVICE_PROTECTED_STORAGE = getDebugFlag(
251502424, "ENABLE_BOOT_AWARE_STARTUP_DATA", DISABLED,
"Marks LauncherPref data as (and allows it to) available while the device is"
@@ -395,11 +408,16 @@
"USE_LOCAL_ICON_OVERRIDES", ENABLED,
"Use inbuilt monochrome icons if app doesn't provide one");
- // TODO(Block 28): Clean up flags
+ // Aconfig migration complete for ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.
public static final BooleanFlag ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS =
getDebugFlag(270394122, "ENABLE_SPLIT_FROM_FULLSCREEN_SHORTCUT", DISABLED,
"Enable splitting from fullscreen app with keyboard shortcuts");
+ public static boolean enableSplitFromFullscreenWithKeyboardShortcuts() {
+ return ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.get()
+ || Flags.enableSplitFromFullscreenWithKeyboardShortcuts();
+ }
+ // Aconfig migration complete for ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE.
public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE = getDebugFlag(
270393453, "ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE", DISABLED,
"Enable initiating split screen from workspace to workspace.");
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index 57e1641..8bf7ec2 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -536,7 +536,7 @@
mFolderName.selectAll();
}
}
- mFolderName.showKeyboard(true /* shouldFocus */);
+ mFolderName.showKeyboard();
mFolderName.displayCompletions(
Stream.of(mInfo.suggestedFolderNames.getLabels())
.filter(Objects::nonNull)
diff --git a/src/com/android/launcher3/folder/PreviewItemManager.java b/src/com/android/launcher3/folder/PreviewItemManager.java
index 2e5f2e5..b39e968e 100644
--- a/src/com/android/launcher3/folder/PreviewItemManager.java
+++ b/src/com/android/launcher3/folder/PreviewItemManager.java
@@ -43,6 +43,7 @@
import com.android.launcher3.graphics.PreloadIconDrawable;
import com.android.launcher3.model.data.ItemInfoWithIcon;
import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.util.Themes;
import com.android.launcher3.views.ActivityContext;
import java.util.ArrayList;
@@ -434,7 +435,8 @@
drawable.setLevel(item.getProgressLevel());
p.drawable = drawable;
} else {
- p.drawable = item.newIcon(mContext, FLAG_THEMED);
+ p.drawable = item.newIcon(mContext,
+ Themes.isThemedIconEnabled(mContext) ? FLAG_THEMED : 0);
}
p.drawable.setBounds(0, 0, mIconSize, mIconSize);
p.item = item;
diff --git a/src/com/android/launcher3/responsive/HotseatSpecsProvider.kt b/src/com/android/launcher3/responsive/HotseatSpecsProvider.kt
index 7f7f2f1..8710303 100644
--- a/src/com/android/launcher3/responsive/HotseatSpecsProvider.kt
+++ b/src/com/android/launcher3/responsive/HotseatSpecsProvider.kt
@@ -74,7 +74,7 @@
dimensionType =
DimensionType.entries[
attrs.getInt(
- R.styleable.ResponsiveSpec_specType,
+ R.styleable.ResponsiveSpec_dimensionType,
DimensionType.HEIGHT.ordinal
)],
specType = responsiveSpecType,
diff --git a/src/com/android/launcher3/responsive/ResponsiveSpec.kt b/src/com/android/launcher3/responsive/ResponsiveSpec.kt
index cf70ad2..413e2dc 100644
--- a/src/com/android/launcher3/responsive/ResponsiveSpec.kt
+++ b/src/com/android/launcher3/responsive/ResponsiveSpec.kt
@@ -72,7 +72,7 @@
dimensionType =
DimensionType.entries[
attrs.getInt(
- R.styleable.ResponsiveSpec_specType,
+ R.styleable.ResponsiveSpec_dimensionType,
DimensionType.HEIGHT.ordinal
)],
specType = responsiveSpecType,
@@ -137,6 +137,9 @@
* they are calculated from the available space, cells and workspace specs.
*/
class CalculatedResponsiveSpec {
+ var aspectRatio: Float = Float.NaN
+ private set
+
var availableSpace: Int = 0
private set
@@ -159,11 +162,13 @@
private set
constructor(
+ aspectRatio: Float,
availableSpace: Int,
cells: Int,
spec: ResponsiveSpec,
calculatedWorkspaceSpec: CalculatedResponsiveSpec
) {
+ this.aspectRatio = aspectRatio
this.availableSpace = availableSpace
this.cells = cells
this.spec = spec
@@ -183,7 +188,8 @@
updateRemainderSpaces(availableSpace, cells, spec)
}
- constructor(availableSpace: Int, cells: Int, spec: ResponsiveSpec) {
+ constructor(aspectRatio: Float, availableSpace: Int, cells: Int, spec: ResponsiveSpec) {
+ this.aspectRatio = aspectRatio
this.availableSpace = availableSpace
this.cells = cells
this.spec = spec
@@ -199,6 +205,9 @@
fun isResponsiveSpecType(type: ResponsiveSpecType) = spec.specType == type
+ // TODO(b/287975993): Remove this after icon size is extracted to responsive grid
+ fun isCellSizeMatchWorkspace(): Boolean = spec.cellSize.matchWorkspace
+
private fun updateRemainderSpaces(availableSpace: Int, cells: Int, spec: ResponsiveSpec) {
val gutters = cells - 1
val usedSpace = startPaddingPx + endPaddingPx + (gutterPx * gutters) + (cellSizePx * cells)
@@ -236,6 +245,7 @@
return "Calculated${spec.specType}Spec(" +
"availableSpace=$availableSpace, cells=$cells, startPaddingPx=$startPaddingPx, " +
"endPaddingPx=$endPaddingPx, gutterPx=$gutterPx, cellSizePx=$cellSizePx, " +
+ "aspectRatio=${aspectRatio}, " +
"${spec.specType}Spec.maxAvailableSize=${spec.maxAvailableSize}" +
")"
}
diff --git a/src/com/android/launcher3/responsive/ResponsiveSpecsProvider.kt b/src/com/android/launcher3/responsive/ResponsiveSpecsProvider.kt
index bc2f4c5..67eaac0 100644
--- a/src/com/android/launcher3/responsive/ResponsiveSpecsProvider.kt
+++ b/src/com/android/launcher3/responsive/ResponsiveSpecsProvider.kt
@@ -76,7 +76,7 @@
): CalculatedResponsiveSpec {
val specsGroup = getSpecsByAspectRatio(aspectRatio)
val spec = specsGroup.getSpec(dimensionType, availableSpace)
- return CalculatedResponsiveSpec(availableSpace, numCells, spec)
+ return CalculatedResponsiveSpec(aspectRatio, availableSpace, numCells, spec)
}
/**
@@ -114,7 +114,13 @@
val specsGroup = getSpecsByAspectRatio(aspectRatio)
val spec = specsGroup.getSpec(dimensionType, availableSpace)
- return CalculatedResponsiveSpec(availableSpace, numCells, spec, calculatedWorkspaceSpec)
+ return CalculatedResponsiveSpec(
+ aspectRatio,
+ availableSpace,
+ numCells,
+ spec,
+ calculatedWorkspaceSpec
+ )
}
companion object {
diff --git a/src/com/android/launcher3/testing/TestLogging.java b/src/com/android/launcher3/testing/TestLogging.java
index 70691f8..60d0e95 100644
--- a/src/com/android/launcher3/testing/TestLogging.java
+++ b/src/com/android/launcher3/testing/TestLogging.java
@@ -76,7 +76,7 @@
// be more useful.
// That's why we pass false as the value for the 'reportToTapl' parameter.
recordEventSlow(sequence, message + ": " + event, false);
- registerEventNotFromTest(event);
+ if (action != MotionEvent.ACTION_CANCEL) registerEventNotFromTest(event);
}
}
diff --git a/src/com/android/launcher3/util/DisplayController.java b/src/com/android/launcher3/util/DisplayController.java
index 26ab5b4..0470971 100644
--- a/src/com/android/launcher3/util/DisplayController.java
+++ b/src/com/android/launcher3/util/DisplayController.java
@@ -22,8 +22,8 @@
import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING;
import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING_KEY;
import static com.android.launcher3.Utilities.dpiFromPx;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING;
import static com.android.launcher3.config.FeatureFlags.ENABLE_TRANSIENT_TASKBAR;
+import static com.android.launcher3.config.FeatureFlags.enableTaskbarPinning;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH;
@@ -116,7 +116,7 @@
mContext = context;
mDM = context.getSystemService(DisplayManager.class);
- if (ENABLE_TASKBAR_PINNING.get()) {
+ if (enableTaskbarPinning()) {
attachTaskbarPinningSharedPreferenceChangeListener(mContext);
}
@@ -179,7 +179,7 @@
@Override
public void close() {
mDestroyed = true;
- if (ENABLE_TASKBAR_PINNING.get()) {
+ if (enableTaskbarPinning()) {
LauncherPrefs.get(mContext).removeListener(
mTaskbarPinningPreferenceChangeListener, TASKBAR_PINNING);
}
@@ -414,7 +414,7 @@
// sTransientTaskbarStatusForTests and update test to directly
// toggle shred preference to switch transient taskbar on/of
if (!Utilities.isRunningInTestHarness()
- && ENABLE_TASKBAR_PINNING.get()
+ && enableTaskbarPinning()
&& mIsTaskbarPinned) {
return false;
}
diff --git a/src/com/android/launcher3/util/IconSizeSteps.kt b/src/com/android/launcher3/util/IconSizeSteps.kt
index aa644b0..6128eb4 100644
--- a/src/com/android/launcher3/util/IconSizeSteps.kt
+++ b/src/com/android/launcher3/util/IconSizeSteps.kt
@@ -39,8 +39,8 @@
return steps[max(0, getIndexForIconSize(iconSizePx) - 1)]
}
- fun getIconSmallerThan(cellWidth: Int): Int {
- return steps.lastOrNull { it <= cellWidth } ?: steps[0]
+ fun getIconSmallerThan(cellSize: Int): Int {
+ return steps.lastOrNull { it <= cellSize } ?: steps[0]
}
private fun getIndexForIconSize(iconSizePx: Int): Int {
diff --git a/tests/Launcher3Tests.xml b/tests/Launcher3Tests.xml
index 3fff622..0aed1e1 100644
--- a/tests/Launcher3Tests.xml
+++ b/tests/Launcher3Tests.xml
@@ -46,5 +46,6 @@
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="com.android.launcher3.tests" />
<option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+ <option name="instrumentation-arg" key="waitForActivitiesToComplete" value="false" />
</test>
</configuration>
diff --git a/tests/res/values/attrs.xml b/tests/res/values/attrs.xml
index 4ba4fc7..2a7a346 100644
--- a/tests/res/values/attrs.xml
+++ b/tests/res/values/attrs.xml
@@ -19,7 +19,7 @@
<resources>
<!-- Responsive grids attributes -->
<declare-styleable name="ResponsiveSpec">
- <attr name="specType" format="integer">
+ <attr name="dimensionType" format="integer">
<enum name="height" value="0" />
<enum name="width" value="1" />
</attr>
@@ -31,17 +31,17 @@
</declare-styleable>
<declare-styleable name="WorkspaceSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
<declare-styleable name="FolderSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
<declare-styleable name="AllAppsSpec">
- <attr name="specType" />
+ <attr name="dimensionType" />
<attr name="maxAvailableSize" />
</declare-styleable>
diff --git a/tests/res/xml/invalid_all_apps_file_case_1.xml b/tests/res/xml/invalid_all_apps_file_case_1.xml
index f09ecd8..d89e675 100644
--- a/tests/res/xml/invalid_all_apps_file_case_1.xml
+++ b/tests/res/xml/invalid_all_apps_file_case_1.xml
@@ -16,7 +16,7 @@
<allAppsSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<allAppsSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<!-- missing startPadding -->
<endPadding launcher:fixedSize="0dp" />
@@ -25,7 +25,7 @@
</allAppsSpec>
<allAppsSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:matchWorkspace="true" />
<endPadding launcher:matchWorkspace="true" />
diff --git a/tests/res/xml/invalid_all_apps_file_case_2.xml b/tests/res/xml/invalid_all_apps_file_case_2.xml
index 7644def..d5540f2 100644
--- a/tests/res/xml/invalid_all_apps_file_case_2.xml
+++ b/tests/res/xml/invalid_all_apps_file_case_2.xml
@@ -16,7 +16,7 @@
<allAppsSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<allAppsSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="0dp" />
@@ -28,7 +28,7 @@
</allAppsSpec>
<allAppsSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:matchWorkspace="true" />
<endPadding launcher:matchWorkspace="true" />
diff --git a/tests/res/xml/invalid_all_apps_file_case_3.xml b/tests/res/xml/invalid_all_apps_file_case_3.xml
index 5a3bc64..75c2172 100644
--- a/tests/res/xml/invalid_all_apps_file_case_3.xml
+++ b/tests/res/xml/invalid_all_apps_file_case_3.xml
@@ -16,7 +16,7 @@
<allAppsSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<allAppsSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="0dp" />
@@ -26,7 +26,7 @@
</allAppsSpec>
<allAppsSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:matchWorkspace="true" />
<endPadding launcher:matchWorkspace="true" />
diff --git a/tests/res/xml/invalid_folders_specs_1.xml b/tests/res/xml/invalid_folders_specs_1.xml
index 1715ffd..6583d62 100644
--- a/tests/res/xml/invalid_folders_specs_1.xml
+++ b/tests/res/xml/invalid_folders_specs_1.xml
@@ -17,13 +17,13 @@
<!-- Tablet - 6x5 portrait -->
<folderSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="800dp">
<!-- missing startPadding -->
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
<cellSize launcher:matchWorkspace="true" />
</folderSpec>
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
@@ -31,7 +31,7 @@
</folderSpec>
<!-- Height spec is fixed -->
- <folderSpec launcher:specType="height" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="height" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="24dp" />
<!-- mapped to footer height size -->
<endPadding launcher:fixedSize="64dp" />
diff --git a/tests/res/xml/invalid_folders_specs_2.xml b/tests/res/xml/invalid_folders_specs_2.xml
index bb26e2e..95ac856 100644
--- a/tests/res/xml/invalid_folders_specs_2.xml
+++ b/tests/res/xml/invalid_folders_specs_2.xml
@@ -17,7 +17,7 @@
<!-- Tablet - 6x5 portrait -->
<folderSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="800dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<!-- more than 1 value in one tag -->
@@ -26,7 +26,7 @@
launcher:fixedSize="16dp" />
<cellSize launcher:matchWorkspace="true" />
</folderSpec>
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
@@ -34,7 +34,7 @@
</folderSpec>
<!-- Height spec is fixed -->
- <folderSpec launcher:specType="height" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="height" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="24dp" />
<!-- mapped to footer height size -->
<endPadding launcher:fixedSize="64dp" />
diff --git a/tests/res/xml/invalid_folders_specs_3.xml b/tests/res/xml/invalid_folders_specs_3.xml
index cdd8056..f71040d 100644
--- a/tests/res/xml/invalid_folders_specs_3.xml
+++ b/tests/res/xml/invalid_folders_specs_3.xml
@@ -17,14 +17,14 @@
<!-- Tablet - 6x5 portrait - More the one value first gutter -->
<folderSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="800dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
<!-- value bigger than 1 -->
<cellSize launcher:ofRemainderSpace="1.001" />
</folderSpec>
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
@@ -32,7 +32,7 @@
</folderSpec>
<!-- Height spec is fixed -->
- <folderSpec launcher:specType="height" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="height" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="24dp" />
<!-- mapped to footer height size -->
<endPadding launcher:fixedSize="64dp" />
diff --git a/tests/res/xml/invalid_folders_specs_4.xml b/tests/res/xml/invalid_folders_specs_4.xml
index cd5f334..24b8ef6 100644
--- a/tests/res/xml/invalid_folders_specs_4.xml
+++ b/tests/res/xml/invalid_folders_specs_4.xml
@@ -16,7 +16,7 @@
<!-- missing height spec -->
<folderSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="800dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
diff --git a/tests/res/xml/invalid_folders_specs_5.xml b/tests/res/xml/invalid_folders_specs_5.xml
index f554521..6d6f577 100644
--- a/tests/res/xml/invalid_folders_specs_5.xml
+++ b/tests/res/xml/invalid_folders_specs_5.xml
@@ -16,7 +16,7 @@
<!-- missing breakpoints > 800dp -->
<folderSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="800dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
@@ -24,7 +24,7 @@
</folderSpec>
<!-- Height spec is fixed -->
- <folderSpec launcher:specType="height" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="height" launcher:maxAvailableSize="800dp">
<startPadding launcher:fixedSize="24dp" />
<!-- mapped to footer height size -->
<endPadding launcher:fixedSize="64dp" />
diff --git a/tests/res/xml/invalid_hotseat_file_case_1.xml b/tests/res/xml/invalid_hotseat_file_case_1.xml
index bd40690..8e0ce2c 100644
--- a/tests/res/xml/invalid_hotseat_file_case_1.xml
+++ b/tests/res/xml/invalid_hotseat_file_case_1.xml
@@ -16,14 +16,14 @@
<hotseatSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<hotseatSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="847dp">
<hotseatQsbSpace launcher:ofAvailableSpace="1" />
<edgePadding launcher:fixedSize="36dp" />
</hotseatSpec>
<hotseatSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<hotseatQsbSpace launcher:fixedSize="36dp" />
<edgePadding launcher:fixedSize="36dp" />
diff --git a/tests/res/xml/invalid_responsive_spec_1.xml b/tests/res/xml/invalid_responsive_spec_1.xml
index 7a474bf..d1bcf65 100644
--- a/tests/res/xml/invalid_responsive_spec_1.xml
+++ b/tests/res/xml/invalid_responsive_spec_1.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<cellSize launcher:fixedSize="104dp" />
<endPadding launcher:ofRemainderSpace="1" />
<gutter launcher:fixedSize="16dp" />
@@ -26,7 +26,7 @@
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<cellSize launcher:ofRemainderSpace="0.25" />
<endPadding launcher:fixedSize="22dp" />
<gutter launcher:fixedSize="16dp" />
diff --git a/tests/res/xml/invalid_responsive_spec_2.xml b/tests/res/xml/invalid_responsive_spec_2.xml
index 6735300..49e1f93 100644
--- a/tests/res/xml/invalid_responsive_spec_2.xml
+++ b/tests/res/xml/invalid_responsive_spec_2.xml
@@ -18,7 +18,7 @@
<specs launcher:maxAspectRatio="10">
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<cellSize launcher:fixedSize="104dp" />
<endPadding launcher:ofRemainderSpace="1" />
<gutter launcher:fixedSize="16dp" />
@@ -27,7 +27,7 @@
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<cellSize launcher:ofRemainderSpace="0.25" />
<endPadding launcher:fixedSize="22dp" />
<gutter launcher:fixedSize="16dp" />
@@ -37,7 +37,7 @@
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<cellSize launcher:ofRemainderSpace="0.25" />
<endPadding launcher:fixedSize="22dp" />
<gutter launcher:fixedSize="16dp" />
@@ -45,7 +45,7 @@
</workspaceSpec>
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<cellSize launcher:fixedSize="104dp" />
<endPadding launcher:ofRemainderSpace="1" />
<gutter launcher:fixedSize="16dp" />
diff --git a/tests/res/xml/invalid_responsive_spec_3.xml b/tests/res/xml/invalid_responsive_spec_3.xml
index 72d0c20..37fee06 100644
--- a/tests/res/xml/invalid_responsive_spec_3.xml
+++ b/tests/res/xml/invalid_responsive_spec_3.xml
@@ -18,7 +18,7 @@
<specs launcher:maxAspectRatio="10">
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<cellSize launcher:fixedSize="104dp" />
<endPadding launcher:ofRemainderSpace="1" />
<gutter launcher:fixedSize="16dp" />
@@ -27,7 +27,7 @@
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<cellSize launcher:ofRemainderSpace="0.25" />
<endPadding launcher:fixedSize="22dp" />
<gutter launcher:fixedSize="16dp" />
@@ -38,7 +38,7 @@
<specs launcher:maxAspectRatio="0">
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<cellSize launcher:fixedSize="104dp" />
<endPadding launcher:ofRemainderSpace="1" />
<gutter launcher:fixedSize="16dp" />
@@ -47,7 +47,7 @@
<workspaceSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<cellSize launcher:ofRemainderSpace="0.25" />
<endPadding launcher:fixedSize="22dp" />
<gutter launcher:fixedSize="16dp" />
diff --git a/tests/res/xml/invalid_workspace_file_case_1.xml b/tests/res/xml/invalid_workspace_file_case_1.xml
index fc6ff59..7a234d1 100644
--- a/tests/res/xml/invalid_workspace_file_case_1.xml
+++ b/tests/res/xml/invalid_workspace_file_case_1.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="648dp">
<!-- missing startPadding -->
<endPadding
@@ -29,7 +29,7 @@
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofAvailableSpace="0.0306" />
@@ -43,7 +43,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofRemainderSpace="0.21436227" />
diff --git a/tests/res/xml/invalid_workspace_file_case_2.xml b/tests/res/xml/invalid_workspace_file_case_2.xml
index 2feeb54..6638285 100644
--- a/tests/res/xml/invalid_workspace_file_case_2.xml
+++ b/tests/res/xml/invalid_workspace_file_case_2.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="648dp">
<startPadding
launcher:ofAvailableSpace="0.0125" />
@@ -32,7 +32,7 @@
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofAvailableSpace="0.0306" />
@@ -46,7 +46,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofRemainderSpace="0.21436227" />
diff --git a/tests/res/xml/invalid_workspace_file_case_3.xml b/tests/res/xml/invalid_workspace_file_case_3.xml
index 79e6fbd..cb3e63f 100644
--- a/tests/res/xml/invalid_workspace_file_case_3.xml
+++ b/tests/res/xml/invalid_workspace_file_case_3.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="648dp">
<startPadding
launcher:ofAvailableSpace="0.0125" />
@@ -31,7 +31,7 @@
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofAvailableSpace="0.0306" />
@@ -45,7 +45,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofRemainderSpace="0.21436227" />
diff --git a/tests/res/xml/invalid_workspace_file_case_4.xml b/tests/res/xml/invalid_workspace_file_case_4.xml
index 66a2618..901278d 100644
--- a/tests/res/xml/invalid_workspace_file_case_4.xml
+++ b/tests/res/xml/invalid_workspace_file_case_4.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="648dp">
<startPadding
launcher:ofAvailableSpace="0.0125" />
@@ -31,7 +31,7 @@
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofAvailableSpace="0.0306" />
@@ -45,7 +45,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding
launcher:ofRemainderSpace="0.21436227" />
diff --git a/tests/res/xml/valid_all_apps_file.xml b/tests/res/xml/valid_all_apps_file.xml
index f0967c4..33ea9b6 100644
--- a/tests/res/xml/valid_all_apps_file.xml
+++ b/tests/res/xml/valid_all_apps_file.xml
@@ -17,7 +17,7 @@
<allAppsSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<allAppsSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="0dp" />
@@ -26,7 +26,7 @@
</allAppsSpec>
<allAppsSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:matchWorkspace="true" />
<endPadding launcher:matchWorkspace="true" />
diff --git a/tests/res/xml/valid_folders_specs.xml b/tests/res/xml/valid_folders_specs.xml
index 2ef59a9..ecff9b8 100644
--- a/tests/res/xml/valid_folders_specs.xml
+++ b/tests/res/xml/valid_folders_specs.xml
@@ -15,13 +15,13 @@
-->
<folderSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="800dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="800dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
<cellSize launcher:matchWorkspace="true" />
</folderSpec>
- <folderSpec launcher:specType="width" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="width" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="16dp" />
<gutter launcher:fixedSize="16dp" />
@@ -29,7 +29,7 @@
</folderSpec>
<!-- Height spec is fixed -->
- <folderSpec launcher:specType="height" launcher:maxAvailableSize="9999dp">
+ <folderSpec launcher:dimensionType="height" launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="24dp" />
<!-- mapped to footer height size -->
<endPadding launcher:fixedSize="64dp" />
diff --git a/tests/res/xml/valid_hotseat_file.xml b/tests/res/xml/valid_hotseat_file.xml
index d1c9e49..65c1d8b 100644
--- a/tests/res/xml/valid_hotseat_file.xml
+++ b/tests/res/xml/valid_hotseat_file.xml
@@ -17,14 +17,14 @@
<specs launcher:maxAspectRatio="10">
<hotseatSpec
launcher:maxAvailableSize="847dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<hotseatQsbSpace launcher:fixedSize="24dp" />
<edgePadding launcher:fixedSize="48dp" />
</hotseatSpec>
<hotseatSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="height">
+ launcher:dimensionType="height">
<hotseatQsbSpace launcher:fixedSize="36dp" />
<edgePadding launcher:fixedSize="48dp" />
</hotseatSpec>
diff --git a/tests/res/xml/valid_hotseat_land_file.xml b/tests/res/xml/valid_hotseat_land_file.xml
index a72fd18..f67adad 100644
--- a/tests/res/xml/valid_hotseat_land_file.xml
+++ b/tests/res/xml/valid_hotseat_land_file.xml
@@ -17,14 +17,14 @@
<specs launcher:maxAspectRatio="10">
<hotseatSpec
launcher:maxAvailableSize="743dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<hotseatQsbSpace launcher:fixedSize="0dp" />
<edgePadding launcher:fixedSize="48dp" />
</hotseatSpec>
<hotseatSpec
launcher:maxAvailableSize="9999dp"
- launcher:specType="width">
+ launcher:dimensionType="width">
<hotseatQsbSpace launcher:fixedSize="0dp" />
<edgePadding launcher:fixedSize="64dp" />
</hotseatSpec>
diff --git a/tests/res/xml/valid_responsive_spec_unsorted.xml b/tests/res/xml/valid_responsive_spec_unsorted.xml
index 7cefc8e..9a463d5 100644
--- a/tests/res/xml/valid_responsive_spec_unsorted.xml
+++ b/tests/res/xml/valid_responsive_spec_unsorted.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="10">
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="34dp" />
@@ -27,7 +27,7 @@
<!-- Height spec -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="371dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="24dp" />
@@ -37,7 +37,7 @@
<!-- Width spec -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="716dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="64dp" />
@@ -45,7 +45,7 @@
<cellSize launcher:ofRemainderSpace="0.25" />
</workspaceSpec>
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="36dp" />
<endPadding launcher:fixedSize="80dp" />
@@ -53,7 +53,7 @@
<cellSize launcher:ofRemainderSpace="0.25" />
</workspaceSpec>
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="602dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="36dp" />
@@ -66,7 +66,7 @@
<specs launcher:maxAspectRatio="12">
<!-- Height spec -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="2dp" />
<endPadding launcher:fixedSize="2dp" />
@@ -76,7 +76,7 @@
<!-- Width spec -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="1dp" />
<endPadding launcher:fixedSize="1dp" />
@@ -88,7 +88,7 @@
<specs launcher:maxAspectRatio="1.05">
<!-- 584 grid height + 28 remainder space -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="612dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:ofRemainderSpace="1" />
@@ -97,7 +97,7 @@
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="8dp" />
<endPadding launcher:ofRemainderSpace="1" />
@@ -107,7 +107,7 @@
<!-- 584 grid height -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="584dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="32dp" />
@@ -117,7 +117,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="22dp" />
<endPadding launcher:fixedSize="22dp" />
diff --git a/tests/res/xml/valid_workspace_file.xml b/tests/res/xml/valid_workspace_file.xml
index da5ca11..9c44502 100644
--- a/tests/res/xml/valid_workspace_file.xml
+++ b/tests/res/xml/valid_workspace_file.xml
@@ -18,7 +18,7 @@
<specs launcher:maxAspectRatio="1.05">
<!-- 584 grid height -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="584dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="32dp" />
@@ -28,7 +28,7 @@
<!-- 584 grid height + 28 remainder space -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="612dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:ofRemainderSpace="1" />
@@ -37,7 +37,7 @@
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="8dp" />
<endPadding launcher:ofRemainderSpace="1" />
@@ -49,7 +49,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="22dp" />
<endPadding launcher:fixedSize="22dp" />
@@ -62,7 +62,7 @@
<specs launcher:maxAspectRatio="99999">
<!-- Height spec -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="371dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="24dp" />
@@ -70,7 +70,7 @@
<cellSize launcher:ofRemainderSpace="0.25" />
</workspaceSpec>
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="34dp" />
@@ -80,7 +80,7 @@
<!-- Width spec -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="602dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="36dp" />
@@ -88,7 +88,7 @@
<cellSize launcher:ofRemainderSpace="0.25" />
</workspaceSpec>
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="716dp">
<startPadding launcher:fixedSize="16dp" />
<endPadding launcher:fixedSize="64dp" />
@@ -96,7 +96,7 @@
<cellSize launcher:ofRemainderSpace="0.25" />
</workspaceSpec>
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="36dp" />
<endPadding launcher:fixedSize="80dp" />
diff --git a/tests/res/xml/valid_workspace_unsorted_file.xml b/tests/res/xml/valid_workspace_unsorted_file.xml
index 9f2bdc3..6bf7c78 100644
--- a/tests/res/xml/valid_workspace_unsorted_file.xml
+++ b/tests/res/xml/valid_workspace_unsorted_file.xml
@@ -17,7 +17,7 @@
<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
<specs launcher:maxAspectRatio="1.05">
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="8dp" />
<endPadding launcher:ofRemainderSpace="1" />
@@ -27,7 +27,7 @@
<!-- 584 grid height -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="584dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:fixedSize="32dp" />
@@ -37,7 +37,7 @@
<!-- 584 grid height + 28 remainder space -->
<workspaceSpec
- launcher:specType="height"
+ launcher:dimensionType="height"
launcher:maxAvailableSize="612dp">
<startPadding launcher:fixedSize="0dp" />
<endPadding launcher:ofRemainderSpace="1" />
@@ -47,7 +47,7 @@
<!-- Width spec is always the same -->
<workspaceSpec
- launcher:specType="width"
+ launcher:dimensionType="width"
launcher:maxAvailableSize="9999dp">
<startPadding launcher:fixedSize="22dp" />
<endPadding launcher:fixedSize="22dp" />
diff --git a/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java b/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java
index 80f73cb..fe9464a 100644
--- a/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java
+++ b/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java
@@ -21,6 +21,8 @@
import static org.junit.Assert.assertTrue;
import android.view.KeyEvent;
+import android.view.View;
+import android.view.WindowInsets;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -76,4 +78,39 @@
allApps.unfreeze();
}
}
+
+ @Test
+ public void testAllAppsExitSearchAndFocusSearchResults() {
+ final HomeAllApps allApps = mLauncher.goHome().switchToAllApps();
+ assertTrue("Launcher internal state is not All Apps",
+ isInState(() -> LauncherState.ALL_APPS));
+ allApps.freeze();
+ try {
+ executeOnLauncher(launcher -> launcher.getAppsView().getSearchView().requestFocus());
+ waitForLauncherCondition("Search view does not have focus.",
+ launcher -> launcher.getAppsView().getSearchView().hasFocus());
+
+ mLauncher.pressAndHoldKeyCode(KeyEvent.KEYCODE_C, 0);
+ waitForLauncherCondition("Search view not active.",
+ launcher -> launcher.getAppsView().getActiveRecyclerView()
+ instanceof SearchRecyclerView);
+ mLauncher.unpressKeyCode(KeyEvent.KEYCODE_C, 0);
+
+ executeOnLauncher(launcher -> launcher.getAppsView().getSearchUiManager().getEditText()
+ .hideKeyboard(/* clearFocus= */ false));
+ waitForLauncherCondition("Keyboard still visible.", launcher -> {
+ View root = launcher.getDragLayer();
+ WindowInsets insets = root.getRootWindowInsets();
+ return insets != null && !insets.isVisible(WindowInsets.Type.ime());
+ });
+
+ mLauncher.pressAndHoldKeyCode(KeyEvent.KEYCODE_DPAD_DOWN, 0);
+ mLauncher.unpressKeyCode(KeyEvent.KEYCODE_DPAD_DOWN, 0);
+ waitForLauncherCondition("No focused child", launcher ->
+ launcher.getAppsView().getActiveRecyclerView().getApps().getFocusedChild()
+ != null);
+ } finally {
+ allApps.unfreeze();
+ }
+ }
}
diff --git a/tests/src/com/android/launcher3/dragging/TaplUninstallRemove.java b/tests/src/com/android/launcher3/dragging/TaplUninstallRemove.java
index 7027e85..a690543 100644
--- a/tests/src/com/android/launcher3/dragging/TaplUninstallRemove.java
+++ b/tests/src/com/android/launcher3/dragging/TaplUninstallRemove.java
@@ -100,8 +100,7 @@
*/
@Test
@PortraitLandscape
- // TODO(b/293944634): Remove Screenrecord after flaky debug, and add
- // @PlatinumTest(focusArea = "launcher") back
+ @PlatinumTest(focusArea = "launcher")
@ScreenRecordRule.ScreenRecord
public void testUninstallFromWorkspace() throws Exception {
installDummyAppAndWaitForUIUpdate();
diff --git a/tests/src/com/android/launcher3/responsive/FolderSpecTest.kt b/tests/src/com/android/launcher3/responsive/FolderSpecTest.kt
index 1756c9a..5cfa49f 100644
--- a/tests/src/com/android/launcher3/responsive/FolderSpecTest.kt
+++ b/tests/src/com/android/launcher3/responsive/FolderSpecTest.kt
@@ -129,7 +129,8 @@
gutter = SizeSpec(fixedSize = 10f),
cellSize = SizeSpec(fixedSize = 10f)
)
- val calculatedWorkspaceSpec = CalculatedResponsiveSpec(availableSpace, cells, workspaceSpec)
+ val calculatedWorkspaceSpec =
+ CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_5)
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
@@ -157,7 +158,8 @@
gutter = SizeSpec(fixedSize = 10f),
cellSize = SizeSpec(fixedSize = 10f)
)
- val calculatedWorkspaceSpec = CalculatedResponsiveSpec(availableSpace, cells, workspaceSpec)
+ val calculatedWorkspaceSpec =
+ CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_5)
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
@@ -185,7 +187,8 @@
gutter = SizeSpec(fixedSize = 10f),
cellSize = SizeSpec(fixedSize = 10f)
)
- val calculatedWorkspaceSpec = CalculatedResponsiveSpec(availableSpace, cells, workspaceSpec)
+ val calculatedWorkspaceSpec =
+ CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
@@ -221,7 +224,8 @@
gutter = SizeSpec(fixedSize = 10f),
cellSize = SizeSpec(fixedSize = 10f)
)
- val calculatedWorkspaceSpec = CalculatedResponsiveSpec(availableSpace, cells, workspaceSpec)
+ val calculatedWorkspaceSpec =
+ CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
@@ -249,7 +253,8 @@
gutter = SizeSpec(fixedSize = 10f),
cellSize = SizeSpec(fixedSize = 10f)
)
- val calculatedWorkspaceSpec = CalculatedResponsiveSpec(availableSpace, cells, workspaceSpec)
+ val calculatedWorkspaceSpec =
+ CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
@@ -285,7 +290,8 @@
gutter = SizeSpec(fixedSize = 10f),
cellSize = SizeSpec(fixedSize = 10f)
)
- val calculatedWorkspaceSpec = CalculatedResponsiveSpec(availableSpace, cells, workspaceSpec)
+ val calculatedWorkspaceSpec =
+ CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 8847b8b..688f418 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -105,12 +105,20 @@
private static boolean sDumpWasGenerated = false;
private static boolean sActivityLeakReported = false;
private static boolean sSeenKeyguard = false;
+ private static boolean sFirstTimeWaitingForWizard = true;
private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
protected LooperExecutor mMainThreadExecutor = MAIN_EXECUTOR;
protected final UiDevice mDevice = getUiDevice();
- protected final LauncherInstrumentation mLauncher = new LauncherInstrumentation();
+ protected final LauncherInstrumentation mLauncher = createLauncherInstrumentation();
+
+ @NonNull
+ private static LauncherInstrumentation createLauncherInstrumentation() {
+ waitForSetupWizardDismissal(); // precondition for creating LauncherInstrumentation
+ return new LauncherInstrumentation();
+ }
+
protected Context mTargetContext;
protected String mTargetPackage;
private int mLauncherPid;
@@ -122,7 +130,10 @@
/** Detects activity leaks and throws an exception if a leak is found. */
public static void checkDetectedLeaks(LauncherInstrumentation launcher,
- boolean requireOneActiveActivity) {
+ boolean requireOneActiveActivityUnused) {
+ final boolean requireOneActiveActivity =
+ false; // workaround for leaks when there is an unexpected Recents activity
+
if (sActivityLeakReported) return;
// Check whether activity leak detector has found leaked activities.
@@ -249,8 +260,6 @@
public void setUp() throws Exception {
mLauncher.onTestStart();
- waitForSetupWizardDismissal();
-
final String launcherPackageName = mDevice.getLauncherPackageName();
try {
final Context context = InstrumentationRegistry.getContext();
@@ -286,6 +295,8 @@
/** Method that should be called when a test starts. */
public static void onTestStart() {
+ waitForSetupWizardDismissal();
+
if (TestStabilityRule.isPresubmit()) {
aggressivelyUnlockSysUi();
} else {
@@ -320,18 +331,8 @@
Log.d(TAG, "Keyguard is not visible");
}
- // b/309008042
- private static boolean sFirstTimeWaitingForWizard = true;
-
- // b/309008042
- static {
- waitForSetupWizardDismissal();
- }
-
- // b/309008042
- // TODO(309471958) Productize killing/dismissal of setup wizard.
/** Waits for setup wizard to go away. */
- public static void waitForSetupWizardDismissal() {
+ private static void waitForSetupWizardDismissal() {
if (!TestStabilityRule.isPresubmit()) return;
if (sFirstTimeWaitingForWizard) {
@@ -464,7 +465,6 @@
// flakiness.
protected void waitForLauncherCondition(
String message, Function<Launcher, Boolean> condition, long timeout) {
- waitForSetupWizardDismissal();
verifyKeyguardInvisible();
if (!TestHelpers.isInLauncherProcess()) return;
Wait.atMost(message, () -> getFromLauncher(condition), timeout, mLauncher);
diff --git a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
index 7db3161..32793cc 100644
--- a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
@@ -23,6 +23,8 @@
import static com.android.launcher3.provider.LauncherDbUtils.itemIdMatch;
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
import static com.android.launcher3.util.WidgetUtils.createWidgetInfo;
+import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
+import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -53,6 +55,7 @@
import com.android.launcher3.ui.AbstractLauncherUiTest;
import com.android.launcher3.ui.TestViewHelpers;
import com.android.launcher3.util.rule.ShellCommandRule;
+import com.android.launcher3.util.rule.TestStabilityRule;
import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
import com.android.launcher3.widget.WidgetManagerHelper;
@@ -139,6 +142,7 @@
}
@Test
+ @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/310242894
public void testPendingWidget_withConfigScreen() {
// A non-restored widget with config screen get bound and shows a 'Click to setup' UI.
// Do not bind the widget
@@ -188,6 +192,7 @@
}
@Test
+ @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/310242894
public void testPendingWidget_notRestored_brokenInstall() {
// A widget which is was being installed once, even if its not being
// installed at the moment is not removed.
diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
index 62d70ad..10b428a 100644
--- a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
+++ b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
@@ -59,8 +59,9 @@
throw new AssertionError(
"Launcher received events not sent by the test. This may mean "
+ "that the touch screen of the lab device has sent false"
- + " events. See the logcat for TaplEvents tag and look "
- + "for events with deviceId != -1");
+ + " events. See the logcat for "
+ + "TaplEvents|LauncherEvents|TaplTarget tag and look for "
+ + "events with deviceId != -1");
}
}
}
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index 17169b3..e30885b 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -564,6 +564,9 @@
if (hasSystemLauncherObject(OVERVIEW_RES_ID)) return "Overview";
if (hasLauncherObject(WORKSPACE_RES_ID)) return "Workspace";
if (hasLauncherObject(APPS_RES_ID)) return "AllApps";
+ if (mDevice.hasObject(By.pkg(getLauncherPackageName()).depth(0))) {
+ return "<Launcher in invalid state>";
+ }
return "LaunchedApp (" + getVisiblePackages() + ")";
}
@@ -2063,6 +2066,7 @@
}
// TODO(b/270393900): Remove with ENABLE_ALL_APPS_SEARCH_IN_TASKBAR flag cleanup.
+
/** Refreshes the known overview target in TIS. */
public void refreshOverviewTarget() {
getTestInfo(TestProtocol.REQUEST_REFRESH_OVERVIEW_TARGET);