From 85f9ce48ef56eccddd5c005c3a91e2471f8d6b10 Mon Sep 17 00:00:00 2001 From: Andy Wickham Date: Fri, 8 Jul 2022 16:14:21 -0700 Subject: [PATCH 1/7] Notifies All Apps header when profile tab switches. This fixes scroll listeners which control the header from Taskbar. In other instances of the All Apps container (i.e. from Launcher), the search bar indirectly updates the header because resetSearch is called, which also resets the header. Separately, I would like to clean that up so that AllAppsContainerView does not get controlled by the search bar (maybe as part of a larger reset cleanup). Fix: 236812759 Test: Manual on device with Taskbar Change-Id: I9921e89c87d5e18e4b28854fbb373f24b4189014 --- src/com/android/launcher3/allapps/BaseAllAppsContainerView.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java index 499e749006..62a5e563ef 100644 --- a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java @@ -602,6 +602,8 @@ public abstract class BaseAllAppsContainerView Date: Fri, 15 Jul 2022 16:10:34 -0700 Subject: [PATCH 2/7] Fix small bug with Overview action button placement Overview actions will now be centered properly when 3-button nav is active on tablets in landscape. On most tablet and foldable screens, we shift the Overview action buttons left to accommodate when 3-button nav is active. The only exception is large-screen tablets in landscape orientation, where there is enough room to center them. This patch adds a conditional for that case. Fixes: 239247432 Test: Manual Change-Id: I96f9d5e428273b0611463a1f0f5898910eefe5ce --- .../com/android/quickstep/views/OverviewActionsView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java index 9b585fcf8b..62ec0ef1df 100644 --- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java +++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java @@ -205,7 +205,11 @@ public class OverviewActionsView extends FrameLayo if (mDp == null) { return; } - if (mDp.areNavButtonsInline) { + boolean largeScreenLandscape = mDp.isTablet && !mDp.isTwoPanels && mDp.isLandscape; + // If in 3-button mode, shift action buttons to accommodate 3-button layout. + // (Special exception for landscape tablets, where there is enough room and we don't need to + // shift the action buttons.) + if (mDp.areNavButtonsInline && !largeScreenLandscape) { // Add extra horizontal spacing int additionalPadding = mDp.hotseatBarEndOffset; if (isLayoutRtl()) { From 86a844c976e618c931a46959e3fa37875c5fefae Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Sat, 9 Jul 2022 23:43:51 -0700 Subject: [PATCH 3/7] Add splitFromOverviewForTablet test Design doc: go/split_tapl Bug: 238553914 Test: run this test Change-Id: Ibb385d852f73dee10470d14c4962cf482740105d --- .../util/SplitSelectStateController.java | 4 +++ .../android/quickstep/TaplTestsQuickstep.java | 14 ++++++++ .../launcher3/ui/AbstractLauncherUiTest.java | 17 ++++++--- .../android/launcher3/tapl/BaseOverview.java | 22 ++++++++++++ .../tapl/LauncherInstrumentation.java | 15 ++++++-- .../com/android/launcher3/tapl/Overview.java | 4 +-- .../launcher3/tapl/OverviewActions.java | 19 +++++++++- .../android/launcher3/tapl/OverviewTask.java | 25 +++++++++++-- .../launcher3/tapl/SplitScreenSelect.java | 35 +++++++++++++++++++ 9 files changed, 141 insertions(+), 14 deletions(-) create mode 100644 tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index f1189c9146..e89c842b5f 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -42,6 +42,8 @@ import androidx.annotation.Nullable; import com.android.launcher3.statehandlers.DepthController; import com.android.launcher3.statemanager.StateManager; +import com.android.launcher3.testing.TestLogging; +import com.android.launcher3.testing.TestProtocol; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.SplitConfigurationOptions.StagePosition; import com.android.quickstep.SystemUiProxy; @@ -171,6 +173,8 @@ public class SplitSelectStateController { public void launchTasks(int taskId1, @Nullable PendingIntent taskPendingIntent, @Nullable Intent fillInIntent, int taskId2, @StagePosition int stagePosition, Consumer callback, boolean freezeTaskList, float splitRatio) { + TestLogging.recordEvent( + TestProtocol.SEQUENCE_MAIN, "launchSplitTasks"); // Assume initial task is for top/left part of screen final int[] taskIds = stagePosition == STAGE_POSITION_TOP_OR_LEFT ? new int[]{taskId1, taskId2} diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java index 4bf247c75d..81df3c0f1a 100644 --- a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java +++ b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java @@ -179,6 +179,20 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest { actionsView.clickAndDismissScreenshot(); } + @Test + @PortraitLandscape + public void testSplitFromOverviewForTablet() { + assumeTrue(mLauncher.isTablet()); + + startTestActivity(2); + startTestActivity(3); + + mLauncher.goHome().switchToOverview().getOverviewActions() + .clickSplit() + .getTestActivityTask(2) + .open(); + } + private int getCurrentOverviewPage(Launcher launcher) { return launcher.getOverviewPanel().getCurrentPage(); } diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java index 6f8b9d2967..1f6e1ec420 100644 --- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java +++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java @@ -563,10 +563,13 @@ public abstract class AbstractLauncherUiTest { break; } case OVERVIEW: { - checkLauncherStateInOverview(launcher, expectedContainerType, isStarted, - isResumed); - assertTrue(TestProtocol.stateOrdinalToString(ordinal), - ordinal == TestProtocol.OVERVIEW_STATE_ORDINAL); + verifyOverviewState(launcher, expectedContainerType, isStarted, isResumed, + ordinal, TestProtocol.OVERVIEW_STATE_ORDINAL); + break; + } + case SPLIT_SCREEN_SELECT: { + verifyOverviewState(launcher, expectedContainerType, isStarted, isResumed, + ordinal, TestProtocol.OVERVIEW_SPLIT_SELECT_ORDINAL); break; } case TASKBAR_ALL_APPS: @@ -632,5 +635,9 @@ public abstract class AbstractLauncherUiTest { return homeAppIcon; } - + private void verifyOverviewState(Launcher launcher, ContainerType expectedContainerType, + boolean isStarted, boolean isResumed, int ordinal, int expectedOrdinal) { + checkLauncherStateInOverview(launcher, expectedContainerType, isStarted, isResumed); + assertEquals(TestProtocol.stateOrdinalToString(ordinal), ordinal, expectedOrdinal); + } } diff --git a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java index b7bca02e44..6a11336bb9 100644 --- a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java +++ b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java @@ -19,6 +19,7 @@ package com.android.launcher3.tapl; import android.graphics.Rect; import androidx.annotation.NonNull; +import androidx.test.uiautomator.By; import androidx.test.uiautomator.BySelector; import androidx.test.uiautomator.Direction; import androidx.test.uiautomator.UiObject2; @@ -168,6 +169,27 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer { return new OverviewTask(mLauncher, widestTask, this); } + /** Returns an overview task matching TestActivity {@param activityNumber}. */ + @NonNull + public OverviewTask getTestActivityTask(int activityNumber) { + final List taskViews = getTasks(); + mLauncher.assertNotEquals("Unable to find a task", 0, taskViews.size()); + + final String activityName = "TestActivity" + activityNumber; + UiObject2 task = null; + for (UiObject2 taskView : taskViews) { + // TODO(b/239452415): Use equals instead of descEndsWith + if (taskView.getParent().hasObject(By.descEndsWith(activityName))) { + task = taskView; + break; + } + } + mLauncher.assertNotNull( + "Unable to find a task with " + activityName + " from the task list", task); + + return new OverviewTask(mLauncher, task, this); + } + /** * Returns a list of all tasks fully visible in the tablet grid overview. */ diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index fa6141ad23..925124af60 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -121,8 +121,8 @@ public final class LauncherInstrumentation { // Types for launcher containers that the user is interacting with. "Background" is a // pseudo-container corresponding to inactive launcher covered by another app. public enum ContainerType { - WORKSPACE, HOME_ALL_APPS, OVERVIEW, WIDGETS, FALLBACK_OVERVIEW, LAUNCHED_APP, - TASKBAR_ALL_APPS + WORKSPACE, HOME_ALL_APPS, OVERVIEW, SPLIT_SCREEN_SELECT, WIDGETS, FALLBACK_OVERVIEW, + LAUNCHED_APP, TASKBAR_ALL_APPS } public enum NavigationModel {ZERO_BUTTON, THREE_BUTTON} @@ -744,7 +744,8 @@ public final class LauncherInstrumentation { return waitForLauncherObject(APPS_RES_ID); } - case OVERVIEW: { + case OVERVIEW: + case SPLIT_SCREEN_SELECT: { waitUntilLauncherObjectGone(APPS_RES_ID); waitUntilLauncherObjectGone(WORKSPACE_RES_ID); waitUntilLauncherObjectGone(WIDGETS_RES_ID); @@ -1090,6 +1091,14 @@ public final class LauncherInstrumentation { return object; } + @NonNull + UiObject2 waitForSystemUiObject(BySelector selector) { + final UiObject2 object = TestHelpers.wait( + Until.findObject(selector), WAIT_TIME_MS); + assertNotNull("Can't find a systemui object with selector: " + selector, object); + return object; + } + @NonNull UiObject2 waitForNavigationUiObject(String resId) { String resPackage = getNavigationButtonResPackage(); diff --git a/tests/tapl/com/android/launcher3/tapl/Overview.java b/tests/tapl/com/android/launcher3/tapl/Overview.java index 66a51a56a2..50c21368e0 100644 --- a/tests/tapl/com/android/launcher3/tapl/Overview.java +++ b/tests/tapl/com/android/launcher3/tapl/Overview.java @@ -21,7 +21,7 @@ import com.android.launcher3.tapl.LauncherInstrumentation.ContainerType; /** * Overview pane. */ -public final class Overview extends BaseOverview { +public class Overview extends BaseOverview { Overview(LauncherInstrumentation launcher) { super(launcher); @@ -29,7 +29,7 @@ public final class Overview extends BaseOverview { @Override protected ContainerType getContainerType() { - return LauncherInstrumentation.ContainerType.OVERVIEW; + return ContainerType.OVERVIEW; } @Override diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java b/tests/tapl/com/android/launcher3/tapl/OverviewActions.java index d1b1a846fe..5710713830 100644 --- a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java +++ b/tests/tapl/com/android/launcher3/tapl/OverviewActions.java @@ -86,7 +86,6 @@ public class OverviewActions { "clicked select button")) { return getSelectModeButtons(); } - } } @@ -103,4 +102,22 @@ public class OverviewActions { return new SelectModeButtons(selectModeButtons, mLauncher); } } + + /** + * Clicks split button and enters split select mode. + */ + @NonNull + public SplitScreenSelect clickSplit() { + try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck(); + LauncherInstrumentation.Closable c = mLauncher.addContextLayer( + "want to click split button to enter split select mode")) { + UiObject2 split = mLauncher.waitForObjectInContainer(mOverviewActions, + "action_split"); + mLauncher.clickLauncherObject(split); + try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer( + "clicked split")) { + return new SplitScreenSelect(mLauncher); + } + } + } } diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java b/tests/tapl/com/android/launcher3/tapl/OverviewTask.java index c8caa42b6d..ac7424ef26 100644 --- a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java +++ b/tests/tapl/com/android/launcher3/tapl/OverviewTask.java @@ -20,6 +20,8 @@ import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CH import android.graphics.Rect; +import androidx.test.uiautomator.By; +import androidx.test.uiautomator.BySelector; import androidx.test.uiautomator.UiObject2; import com.android.launcher3.testing.TestProtocol; @@ -32,8 +34,12 @@ import java.util.stream.Collectors; * A recent task in the overview panel carousel. */ public final class OverviewTask { + private static final String SYSTEMUI_PACKAGE = "com.android.systemui"; + static final Pattern TASK_START_EVENT = Pattern.compile("startActivityFromRecentsAsync"); + static final Pattern SPLIT_START_EVENT = + Pattern.compile("launchSplitTasks"); private final LauncherInstrumentation mLauncher; private final UiObject2 mTask; private final BaseOverview mOverview; @@ -125,7 +131,7 @@ public final class OverviewTask { } /** - * Clicks at the task. + * Clicks the task. */ public LaunchedAppState open() { try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) { @@ -136,8 +142,21 @@ public final class OverviewTask { () -> "Launching task didn't open a new window: " + mTask.getParent().getContentDescription(), "clicking an overview task"); - mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT); - return new LaunchedAppState(mLauncher); + if (mOverview.getContainerType() + == LauncherInstrumentation.ContainerType.SPLIT_SCREEN_SELECT) { + mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SPLIT_START_EVENT); + + try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer( + "launched splitscreen")) { + + BySelector divider = By.res(SYSTEMUI_PACKAGE, "docked_divider_handle"); + mLauncher.waitForSystemUiObject(divider); + return new LaunchedAppState(mLauncher); + } + } else { + mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT); + return new LaunchedAppState(mLauncher); + } } } } diff --git a/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java b/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java new file mode 100644 index 0000000000..3cf3ed662f --- /dev/null +++ b/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.tapl; + +import com.android.launcher3.tapl.LauncherInstrumentation.ContainerType; + +/** + * Represents a special state in Overview where the initial split app is shoved to the side and a + * second split app can be selected. + */ +public class SplitScreenSelect extends Overview { + + SplitScreenSelect(LauncherInstrumentation launcher) { + super(launcher); + } + + @Override + protected ContainerType getContainerType() { + return ContainerType.SPLIT_SCREEN_SELECT; + } +} From 1af69afde22105b4567d321a7a7322e716edb923 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 19 Jul 2022 13:34:17 -0700 Subject: [PATCH 4/7] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Idebfc4f59f05055792b26f034f1d918d0547e851 --- quickstep/res/values-ro/strings.xml | 104 ++++++++++++++-------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml index fb661f24f5..ba4badf090 100644 --- a/quickstep/res/values-ro/strings.xml +++ b/quickstep/res/values-ro/strings.xml @@ -19,11 +19,11 @@ - "Fixați" + "Fixează" "Formă liberă" "Niciun element recent" "Setări de utilizare a aplicației" - "Ștergeți tot" + "Șterge tot" "Aplicații recente" "Activitatea s-a încheiat" "%1$s, %2$s" @@ -31,75 +31,75 @@ "Au mai rămas %1$s astăzi" "Sugestii de aplicații" "Aplicațiile estimate" - "Primiți sugestii de aplicații în rândul de jos al ecranului de pornire" - "Primiți sugestii de aplicații în rândul de preferințe al ecranului de pornire" - "Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta în sus pe ecranul de pornire." - "Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor schimba în funcție de rutina dvs. Aplicațiile din rândul de preferințe se vor muta în ecranul de pornire." - "Accesați cu ușurință cele mai folosite aplicații, direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta într-un dosar nou." - "Primiți sugestii de aplicații" + "Primește sugestii de aplicații în rândul de jos al ecranului de pornire" + "Primește sugestii de aplicații în rândul de preferințe al ecranului de pornire" + "Accesează cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta în sus pe ecranul de pornire." + "Accesează cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor schimba în funcție de rutina ta. Aplicațiile din rândul de preferințe se vor muta în ecranul de pornire." + "Accesează cu ușurință cele mai folosite aplicații, direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta într-un dosar nou." + "Primește sugestii de aplicații" "Nu, mulțumesc" "Setări" "Cele mai folosite aplicații apar aici și se modifică în funcție de rutine" - "Trageți aplicații din rândul de jos pentru a primi sugestii de aplicații" + "Trage aplicații din rândul de jos pentru a primi sugestii de aplicații" "Sugestiile de aplicații sunt adăugate în spațiile goale" "Sugestiile de aplicații au fost activate" "Sugestiile de aplicații au fost dezactivate" "Aplicația estimată: %1$s" - "Glisați dinspre marginea dreaptă îndepărtată sau dinspre marginea stângă îndepărtată." - "Glisați dinspre marginea dreaptă sau stângă spre mijlocul ecranului și eliberați." - "Ați învățat cum să glisați dinspre dreapta pentru a reveni. În continuare, aflați cum să comutați aplicațiile." - "Ați finalizat gestul „înapoi”." - "Nu glisați prea aproape de partea de jos a ecranului." - "Schimbați sensibilitatea gestului „Înapoi” accesând Setările" - "Glisați pentru a reveni" - "Pentru a reveni la ultimul ecran, glisați de la marginea stângă sau dreaptă spre mijlocul ecranului." - "Pentru a reveni la ultimul ecran, glisați cu două degete dinspre marginea stângă sau dreaptă spre mijlocul ecranului." - "Glisați în sus dinspre marginea de jos a ecranului." - "Nu întrerupeți gestul înainte de a elibera." - "Glisați direct în sus." - "Ați finalizat gestul „accesați ecranul de pornire”. În continuare, aflați cum să reveniți." - "Ați finalizat gestul „accesați ecranul de pornire”." - "Glisați pentru a accesa ecranul de pornire" - "Glisați în sus din partea de jos a ecranului. Cu acest gest accesați întotdeauna ecranul de pornire." - "Glisați în sus cu 2 degete din partea de jos. Cu acest gest accesați întotdeauna ecranul de pornire." - "Glisați în sus dinspre marginea de jos a ecranului." - "Încercați să țineți fereastra mai mult înainte s-o eliberați." - "Glisați direct în sus, apoi întrerupeți." - "Ați învățat cum să folosiți gesturi. Pentru a dezactiva gesturile, accesați Setările." - "Ați finalizat gestul „comutați între aplicații”." - "Glisați pentru a comuta între aplicații" - "Ca să comutați între aplicații, glisați în sus din partea de jos a ecranului, așteptați și eliberați." - "Ca să comutați între aplicații, glisați în sus cu 2 degete din partea de jos, așteptați și eliberați" + "Glisează dinspre marginea dreaptă îndepărtată sau dinspre marginea stângă îndepărtată." + "Glisează dinspre marginea dreaptă sau stângă spre mijlocul ecranului și eliberează." + "Ai învățat cum să glisezi din dreapta pentru a reveni. Acum află cum să comuți aplicațiile." + "Ai finalizat gestul „înapoi”." + "Nu glisa prea aproape de partea de jos a ecranului." + "Schimbă sensibilitatea gestului „Înapoi” accesând Setările" + "Glisează pentru a reveni" + "Pentru a reveni la ultimul ecran, glisează de la marginea stângă sau dreaptă spre mijlocul ecranului." + "Pentru a reveni la ultimul ecran, glisează cu două degete dinspre marginea stângă sau dreaptă spre mijlocul ecranului." + "Glisează în sus dinspre marginea de jos a ecranului." + "Nu întrerupe gestul înainte de a elibera." + "Glisează direct în sus." + "Ai finalizat gestul „accesează ecranul de pornire”. Acum află cum să revii." + "Ai finalizat gestul „accesează ecranul de pornire”." + "Glisează pentru a accesa ecranul de pornire" + "Glisează în sus din partea de jos a ecranului. Cu acest gest accesezi mereu ecranul de pornire." + "Glisează în sus cu două degete din partea de jos. Cu acest gest accesezi mereu ecranul de pornire." + "Glisează în sus dinspre marginea de jos a ecranului." + "Încearcă să ții fereastra mai mult înainte s-o eliberezi." + "Glisează direct în sus, apoi întrerupe." + "Ai învățat să folosești gesturi. Pentru a dezactiva gesturile, accesează Setările." + "Ai finalizat gestul „comută între aplicații”." + "Glisează pentru a comuta între aplicații" + "Ca să comuți între aplicații, glisează în sus din partea de jos a ecranului, așteaptă și eliberează." + "Ca să comuți între aplicații, glisează cu două degete de jos în sus, așteaptă și eliberează" "Gata" "Gata" "Setări" - "Reîncercați" + "Reîncearcă" "Bravo!" "Tutorialul %1$d / %2$d" "Gata!" - "Glisați în sus pentru a accesa ecranul de pornire" - "Sunteți gata să folosiți telefonul" - "Sunteți gata să folosiți tableta" + "Glisează în sus pentru a accesa ecranul de pornire" + "Ești gata să folosești telefonul" + "Ești gata să folosești tableta" "Setările de navigare ale sistemului" - "Distribuiți" + "Distribuie" "Captură de ecran" "Împărțit" - "Atingeți altă aplicație pentru a folosi ecranul împărțit" + "Atinge altă aplicație pentru ecranul împărțit" "Aplicația nu acceptă ecranul împărțit." - "Această acțiune nu este permisă de aplicație sau de organizația dvs." - "Omiteți tutorialul de navigare?" - "Îl puteți găsi mai târziu în aplicația %1$s" - "Anulați" - "Omiteți" - "Rotiți ecranul" + "Această acțiune nu este permisă de aplicație sau de organizația ta" + "Omiți tutorialul de navigare?" + "Îl poți găsi mai târziu în aplicația %1$s" + "Anulează" + "Omite" + "Rotește ecranul" "Panoul cu informații despre bara de activități s-a afișat" "Panoul cu informații despre bara de activități s-a închis" - "Folosiți bara de activități ca să comutați între aplicații" - "Trageți în lateral ca să folosiți două aplicații deodată" - "Atingeți lung oricând pentru a ascunde bara de activități" + "Folosește bara de activități ca să comuți între aplicații" + "Trage în lateral ca să folosești două aplicații deodată" + "Atinge lung oricând pentru a ascunde bara de activități" "Înainte" "Înapoi" - "Închideți" + "Închide" "Gata" "Ecran de pornire" "Accesibilitate" @@ -108,6 +108,6 @@ "Recente" "Notificări" "Setări rapide" - "Mutați în stânga sus" - "Mutați în dreapta jos" + "Mută în stânga sus" + "Mută în dreapta jos" From 9870f0daf583b99b5b4bb13c0963d60c2279b6f1 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 19 Jul 2022 13:34:57 -0700 Subject: [PATCH 5/7] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I8ecfe4804f27600bc580d0b963a4ab890797f6ab --- go/quickstep/res/values-ro/strings.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/go/quickstep/res/values-ro/strings.xml b/go/quickstep/res/values-ro/strings.xml index 0be8cce7fe..3d6f0d8dd6 100644 --- a/go/quickstep/res/values-ro/strings.xml +++ b/go/quickstep/res/values-ro/strings.xml @@ -1,20 +1,20 @@ - "Trimiteți aplicația" - "Ascultați" - "Traduceți" + "Trimite aplicația" + "Ascultă" + "Tradu" "Lens" "OK" - "ANULAȚI" + "ANULEAZĂ" "SETĂRI" - "Traduceți sau ascultați textul de pe ecran" - "Informații precum textul de pe ecran, adresele web și capturile de ecran pot fi trimise la Google.\n\nCa să schimbați informațiile trimise, accesați ""Setări > Aplicații > Aplicații prestabilite > Aplicația asistent digital""." - "Alegeți un asistent pentru a folosi această funcție" - "Pentru a asculta sau a traduce text de pe ecran, alegeți o aplicație asistent digital în Setări" - "Schimbați asistentul pentru a folosi această funcție" - "Pentru a asculta sau a traduce text de pe ecran, schimbați aplicația asistent digital în Setări" - "Atingeți aici pentru a asculta text de pe ecran" - "Atingeți aici pentru a traduce text de pe ecran" + "Tradu sau ascultă textul de pe ecran" + "Informații precum textul de pe ecran, adresele web și capturile de ecran pot fi trimise la Google.\n\nCa să schimbi informațiile trimise, accesează ""Setări > Aplicații > Aplicații prestabilite > Aplicația asistent digital""." + "Alege un asistent pentru a folosi această funcție" + "Pentru a asculta sau a traduce text de pe ecran, alege o aplicație asistent digital în Setări" + "Schimbă asistentul pentru a folosi această funcție" + "Pentru a asculta sau a traduce text de pe ecran, schimbă aplicația asistent digital în Setări" + "Atinge aici pentru a asculta text de pe ecran" + "Atinge aici pentru a traduce text de pe ecran" "Aplicația nu poate fi distribuită" From 415740978b109848684b7332870be2e15726677a Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Tue, 19 Jul 2022 14:24:14 -0700 Subject: [PATCH 6/7] Include additional logs for widget removal It isn't clear what causes widgets to be removed when restoring on a new device. This CL included additional error message, which hopefully would reveal the root cause. Bug: 235923862 Test: manual Change-Id: I8601d8fe598072dc9def0549796d1e527e167e23 --- src/com/android/launcher3/model/PackageUpdatedTask.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/model/PackageUpdatedTask.java b/src/com/android/launcher3/model/PackageUpdatedTask.java index 489bc38376..a9d272e8cb 100644 --- a/src/com/android/launcher3/model/PackageUpdatedTask.java +++ b/src/com/android/launcher3/model/PackageUpdatedTask.java @@ -57,7 +57,9 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.function.Predicate; +import java.util.stream.Collectors; /** * Handles updates due to changes in package manager (app installed/updated/removed) @@ -343,7 +345,12 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { .or(ItemInfoMatcher.ofComponents(removedComponents, mUser)) .and(ItemInfoMatcher.ofItemIds(forceKeepShortcuts).negate()); deleteAndBindComponentsRemoved(removeMatch, - "removed because the corresponding package or component is removed"); + "removed because the corresponding package or component is removed. " + + "mOp=" + mOp + " removedPackages=" + removedPackages.stream().collect( + Collectors.joining(",", "[", "]")) + + " removedComponents=" + removedComponents.stream() + .filter(Objects::nonNull).map(ComponentName::toShortString) + .collect(Collectors.joining(",", "[", "]"))); // Remove any queued items from the install queue ItemInstallQueue.INSTANCE.get(context) From 4a48cf78276beb24ddae950844d5a84e36f2e986 Mon Sep 17 00:00:00 2001 From: Ming-Shin Lu Date: Fri, 15 Jul 2022 21:12:17 +0800 Subject: [PATCH 7/7] Remove hideCurrentInputMethod from RecentsAnimationController Since CL[1] migrate hide IME logic when quick switching split-screen task to InputMonitor. As a result, remove unused API since it would be no longer to expose hideCurrentInputMethod for launcher to handle gesture. [1]: Ibfcd48e623336c4690b71c4db0ce1ad8f5b26fc9 Bug: 166736352 Bug: 193990612 Test: manual test as steps 1) launch any apps with focusing an editor 2) from overview, select any app to enter split-screen mode 3) taping the editor to show the keyboard 4) swipe up to overview or quick switch app tasks 5) expect the keyboard will be hidden when starting the gesture. Change-Id: I76b93af015db098e836795f72f31b663238d9a47 --- .../src/com/android/quickstep/RecentsAnimationController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationController.java b/quickstep/src/com/android/quickstep/RecentsAnimationController.java index b2979730de..fefef2f45e 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationController.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationController.java @@ -220,7 +220,6 @@ public class RecentsAnimationController { */ public void enableInputConsumer() { UI_HELPER_EXECUTOR.submit(() -> { - mController.hideCurrentInputMethod(); mController.setInputConsumerEnabled(true); }); }