From 155a13de9f964ebdd5e8cc5ff5584b10d2810364 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 27 Aug 2021 05:37:03 +0000 Subject: [PATCH 1/7] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ib8df9d449d6109c352a2e537cd425c716e2f017c --- quickstep/res/values-ka/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml index ab3715aafb..d9420c826c 100644 --- a/quickstep/res/values-ka/strings.xml +++ b/quickstep/res/values-ka/strings.xml @@ -58,7 +58,7 @@ "გადაფურცლეთ ზემოთ." "თქვენ შეასრულეთ მთავარ ეკრანზე დაბრუნების ჟესტი. ახლა კი შევიტყოთ, თუ როგორ დავბრუნდეთ უკან." "თქვენ შეასრულეთ მთავარ ეკრანზე დაბრუნების ჟესტი." - "მთავარ გვერდზე გადასასვლელად გადაფურცლეთ" + "მთავარი გვერდის სანახავად გადაფურცლეთ" "გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ. ამ ჟესტს ყოველთვის მთავარი გვერდის ეკრანზე გადაყავხართ." "გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ." "უფრო ხანგრძლივად დააჭირეთ თითი ფანჯარას, რომ არ დაიხუროს." From e44a274170f5e8475d620930fa405a7244bc22cc Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 27 Aug 2021 05:39:06 +0000 Subject: [PATCH 2/7] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I4560e9785fd11e7beccde0a92d140d90562e436f --- go/quickstep/res/values-gu/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/quickstep/res/values-gu/strings.xml b/go/quickstep/res/values-gu/strings.xml index 28a2d3852d..e1a568f874 100644 --- a/go/quickstep/res/values-gu/strings.xml +++ b/go/quickstep/res/values-gu/strings.xml @@ -4,7 +4,7 @@ "ઍપ શેર કરો" "સાંભળો" "અનુવાદ કરો" - "Lens" + "લેન્સ" "સમજાઈ ગયું" "રદ કરો" "સેટિંગ" From 9ecead562966b609f4a3fb157acd2052c64b1588 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 27 Aug 2021 05:40:37 +0000 Subject: [PATCH 3/7] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I5bfa5dd2771d0823eed4da674991b55202bb5ac6 --- res/values-as/strings.xml | 2 +- res/values-kn/strings.xml | 2 +- res/values-ml/strings.xml | 2 +- res/values-or/strings.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 9bc08e3b6d..a66b9b6e46 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -120,7 +120,7 @@ "নতুন এপসমূহৰ বাবে" "অজ্ঞাত" "আঁতৰাওক" - "Search" + "সন্ধান কৰক" "এই এপটো ইনষ্টল কৰা হোৱা নাই" "এই আইকনৰ এপটো ইনষ্টল কৰা হোৱা নাই। আপুনি এইটো আঁতৰাব পাৰে অথবা এপটো বিচাৰি মেনুৱেলভাৱে ইনষ্টল কৰিব পাৰে।" "%1$s ইনষ্টল কৰি থকা হৈছে, %2$s সম্পূৰ্ণ হৈছে" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 3fa8ac76d3..26d1c8c0ec 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -120,7 +120,7 @@ "ಹೊಸ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ" "ಅಪರಿಚಿತ" "ತೆಗೆದುಹಾಕಿ" - "Search" + "ಹುಡುಕಿ" "ಈ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪನೆಗೊಂಡಿಲ್ಲ" "ಈ ಐಕಾನ್ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪನೆಗೊಂಡಿಲ್ಲ. ನೀವು ಅದನ್ನು ತೆಗೆದುಹಾಕಬಹುದು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ ಹುಡುಕಬಹುದು ಮತ್ತು ಹಸ್ತಚಾಲಿತವಾಗಿ ಅದನ್ನು ಸ್ಥಾಪಿಸಬಹುದು." "%1$s ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ, %2$s ಪೂರ್ಣಗೊಂಡಿದೆ" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index f282bd1db4..67b999d1e8 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -120,7 +120,7 @@ "പുതിയ ആപ്പുകൾക്ക്" "അജ്ഞാതം" "നീക്കംചെയ്യുക" - "Search" + "തിരയുക" "ഈ അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്‌തിട്ടില്ല" "ഈ ഐക്കണുവേണ്ടി അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്‌തിട്ടില്ല. നിങ്ങൾക്കത് നീക്കംചെയ്യാനാകും അല്ലെങ്കിൽ അപ്ലിക്കേഷനുവേണ്ടി തിരഞ്ഞുകൊണ്ട് അത് സ്വമേധയാ ഇൻസ്റ്റാളുചെയ്യുക." "%1$s ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു, %2$s പൂർത്തിയായി" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index b1d644551d..e0f1865ca9 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -120,7 +120,7 @@ "ନୂଆ ଆପ୍‌ ପାଇଁ" "ଅଜଣା" "କାଢ଼ି ଦିଅନ୍ତୁ" - "Search" + "ସନ୍ଧାନ କରନ୍ତୁ" "ଏହି ଆପ୍‌ ଇନଷ୍ଟଲ୍‌ ହୋଇନାହିଁ" "ଏହି ଆଇକନ୍‌ ପାଇଁ ଆପ୍‌ ଇନଷ୍ଟଲ୍‌ ହୋଇନାହିଁ। ଏହାକୁ ଆପଣ ଆପ୍‌ ପାଇଁ ବାହାର କରିପାରିବେ କିମ୍ୱା ସର୍ଚ୍ଚ କରି ପାରିବେ ଏବଂ ଏହାକୁ ମାନୁଆଲ୍‌ ଭାବରେ ଇନଷ୍ଟଲ୍‌ କରିପାରିବେ।" "%1$s ଇନଷ୍ଟଲ୍ କରାଯାଉଛି, %2$s ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି" From ee44c4dc1ee00e126334a0505b9c95850f3bdc73 Mon Sep 17 00:00:00 2001 From: Vadim Caen Date: Fri, 27 Aug 2021 19:17:03 +0200 Subject: [PATCH 4/7] Disable splash screen for launches from widget. The transition from a widget to the splash screen icon feels odd because of the difference in shapes. Disable for S and rework that in T. Test: Manually tested with clock and Calendar Bug: 197504657 Change-Id: Ia375885af967d6ad282dcc7325ad905731c8734d --- .../launcher3/uioverrides/QuickstepInteractionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java index c2c721adf8..1cf50f7f64 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java @@ -71,7 +71,7 @@ class QuickstepInteractionHandler implements RemoteViews.InteractionHandler { } } activityOptions.options.setPendingIntentLaunchFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - activityOptions.options.setSplashscreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON); + activityOptions.options.setSplashscreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_EMPTY); Object itemInfo = hostView.getTag(); if (itemInfo instanceof ItemInfo) { mLauncher.addLaunchCookie((ItemInfo) itemInfo, activityOptions.options); From 6c416c699d7bc9aafa24a98aacc00ab06b504ef3 Mon Sep 17 00:00:00 2001 From: vadimt Date: Thu, 26 Aug 2021 16:05:12 -0700 Subject: [PATCH 5/7] Adding a test artifact for logcat with only interesting tags This is based on the brainstorm "diagnostic scripts running on ATP". Please propose additional (to "TestRunner") tags. Also adding class name to all artifact filenames because sometimes different classes have failing tests with the same name. Bug: 197991109 Test: local runs Change-Id: Ic2022ca526d833fe99450e90fcfd8fb7be1f79d5 --- .../launcher3/util/rule/FailureWatcher.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java index fae55cc0cc..f9a9997e99 100644 --- a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java +++ b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java @@ -15,6 +15,7 @@ import org.junit.rules.TestWatcher; import org.junit.runner.Description; import org.junit.runners.model.Statement; +import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -66,15 +67,18 @@ public class FailureWatcher extends TestWatcher { onError(mDevice, description, e); } + static File diagFile(Description description, String prefix, String ext) { + return new File(getInstrumentation().getTargetContext().getFilesDir(), + prefix + "-" + description.getTestClass().getSimpleName() + "." + + description.getMethodName() + "." + ext); + } + public static void onError(UiDevice device, Description description, Throwable e) { Log.d("b/196820244", "onError 1"); if (device == null) return; Log.d("b/196820244", "onError 2"); - final File parentFile = getInstrumentation().getTargetContext().getFilesDir(); - final File sceenshot = new File(parentFile, - "TestScreenshot-" + description.getMethodName() + ".png"); - final File hierarchy = new File(parentFile, - "Hierarchy-" + description.getMethodName() + ".zip"); + final File sceenshot = diagFile(description, "TestScreenshot", "png"); + final File hierarchy = diagFile(description, "Hierarchy", "zip"); // Dump window hierarchy try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(hierarchy))) { @@ -97,13 +101,13 @@ public class FailureWatcher extends TestWatcher { device.takeScreenshot(sceenshot); // Dump accessibility hierarchy - final File accessibilityHierarchyFile = new File(parentFile, - "AccessibilityHierarchy-" + description.getMethodName() + ".uix"); try { - device.dumpWindowHierarchy(accessibilityHierarchyFile); + device.dumpWindowHierarchy(diagFile(description, "AccessibilityHierarchy", "uix")); } catch (IOException ex) { Log.e(TAG, "Failed to save accessibility hierarchy", ex); } + + dumpCommand("logcat -d -s TestRunner", diagFile(description, "FilteredLogcat", "txt")); } private static void dumpStringCommand(String cmd, OutputStream out) throws IOException { @@ -111,6 +115,14 @@ public class FailureWatcher extends TestWatcher { dumpCommand(cmd, out); } + private static void dumpCommand(String cmd, File out) { + try (BufferedOutputStream buffered = new BufferedOutputStream( + new FileOutputStream(out))) { + dumpCommand(cmd, buffered); + } catch (IOException ex) { + } + } + private static void dumpCommand(String cmd, OutputStream out) throws IOException { try (AutoCloseInputStream in = new AutoCloseInputStream(getInstrumentation() .getUiAutomation().executeShellCommand(cmd))) { From cb5bb989e3e8b2d0b43f8a97aeefdfc1389eeaae Mon Sep 17 00:00:00 2001 From: y Date: Wed, 25 Aug 2021 11:58:46 -0700 Subject: [PATCH 6/7] [Work] Fix duplicate work button issue Bug: 195623679 Test: manual Change-Id: I882c5f7a196e07fa0dab3a2f27437abd233ec782 --- .../allapps/AllAppsContainerView.java | 20 ++++++++++--------- .../launcher3/allapps/WorkModeSwitch.java | 12 +++++------ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index d2c71b2afe..9c784f7a84 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -454,7 +454,6 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mAllAppsStore.unregisterIconContainer(mAH[AdapterHolder.WORK].recyclerView); if (mUsingTabs) { - setupWorkToggle(); mAH[AdapterHolder.MAIN].setup(mViewPager.getChildAt(0), mPersonalMatcher); mAH[AdapterHolder.WORK].setup(mViewPager.getChildAt(1), mWorkMatcher); mAH[AdapterHolder.WORK].recyclerView.setId(R.id.apps_list_view_work); @@ -485,6 +484,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo } private void setupWorkToggle() { + removeWorkToggle(); if (Utilities.ATLEAST_P) { mWorkModeSwitch = (WorkModeSwitch) mLauncher.getLayoutInflater().inflate( R.layout.work_mode_fab, this, false); @@ -497,6 +497,14 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo } } + private void removeWorkToggle() { + if (mWorkModeSwitch == null) return; + if (mWorkModeSwitch.getParent() == this) { + this.removeView(mWorkModeSwitch); + } + mWorkModeSwitch = null; + } + private void replaceRVContainer(boolean showTabs) { for (int i = 0; i < mAH.length; i++) { if (mAH[i].recyclerView != null) { @@ -517,8 +525,10 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mViewPager = (AllAppsPagedView) newView; mViewPager.initParentViews(this); mViewPager.getPageIndicator().setOnActivePageChangedListener(this); + setupWorkToggle(); } else { mViewPager = null; + removeWorkToggle(); } } @@ -537,14 +547,6 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mWorkModeSwitch.setWorkTabVisible(currentActivePage == AdapterHolder.WORK && mAllAppsStore.hasModelFlag( FLAG_HAS_SHORTCUT_PERMISSION | FLAG_QUIET_MODE_CHANGE_PERMISSION)); - - if (currentActivePage == AdapterHolder.WORK) { - if (mWorkModeSwitch.getParent() == null) { - addView(mWorkModeSwitch); - } - } else { - removeView(mWorkModeSwitch); - } } } diff --git a/src/com/android/launcher3/allapps/WorkModeSwitch.java b/src/com/android/launcher3/allapps/WorkModeSwitch.java index a800d34758..5d3af08b46 100644 --- a/src/com/android/launcher3/allapps/WorkModeSwitch.java +++ b/src/com/android/launcher3/allapps/WorkModeSwitch.java @@ -51,6 +51,7 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi @Nullable private KeyboardInsetAnimationCallback mKeyboardInsetAnimationCallback; + private boolean mWorkTabVisible; public WorkModeSwitch(Context context) { this(context, null, 0); @@ -91,11 +92,10 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi */ public void setWorkTabVisible(boolean workTabVisible) { clearAnimation(); - if (workTabVisible) { + mWorkTabVisible = workTabVisible; + if (workTabVisible && mWorkEnabled) { setEnabled(true); - if (mWorkEnabled) { - setVisibility(VISIBLE); - } + setVisibility(VISIBLE); setAlpha(0); animate().alpha(1).start(); } else { @@ -105,7 +105,7 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi @Override public void onClick(View view) { - if (Utilities.ATLEAST_P) { + if (Utilities.ATLEAST_P && mWorkTabVisible) { setEnabled(false); Launcher.fromContext(getContext()).getStatsLogManager().logger().log( LAUNCHER_TURN_OFF_WORK_APPS_TAP); @@ -137,7 +137,7 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi @Override public WindowInsets onApplyWindowInsets(WindowInsets insets) { - if (Utilities.ATLEAST_R) { + if (Utilities.ATLEAST_R && mWorkTabVisible) { setTranslationY(0); if (insets.isVisible(WindowInsets.Type.ime())) { Insets keyboardInsets = insets.getInsets(WindowInsets.Type.ime()); From 906def495f56b00eb01dc8c6c085ce70f893fa52 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Mon, 30 Aug 2021 09:23:01 -0700 Subject: [PATCH 7/7] Fix back button not touchable in SUW Since NavbarButtonsViewController already checks visibility of buttons before adding them to the touchableRegion, we can remove teh isThreeButton() check. Test: run adb shell am start -a android.intent.action.MAIN -n com.google.android.setupwizard/.SetupWizardTestActivity, then press back button and ensure it gives visual feedback (even though there's no page to go back to in this test activity). Bug: 191846922 Change-Id: I10d3d046cd2d14017638a2c71ea6b9fe228fadfc --- .../launcher3/taskbar/TaskbarDragLayerController.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java index 0afa480667..b7c5db2f17 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java @@ -123,11 +123,9 @@ public class TaskbarDragLayerController { */ public void updateInsetsTouchability(InsetsInfo insetsInfo) { insetsInfo.touchableRegion.setEmpty(); - if (mActivity.isThreeButtonNav()) { - // Always have nav buttons be touchable - mControllers.navbarButtonsViewController.addVisibleButtonsRegion( - mTaskbarDragLayer, insetsInfo.touchableRegion); - } + // Always have nav buttons be touchable + mControllers.navbarButtonsViewController.addVisibleButtonsRegion( + mTaskbarDragLayer, insetsInfo.touchableRegion); if (mTaskbarDragLayer.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { // Let touches pass through us.