summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values/config.xml5
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java10
-rw-r--r--docs/html/google/play-services/ads.jd5
-rw-r--r--docs/html/google/play-services/id.jd13
-rw-r--r--docs/html/guide/topics/manifest/activity-element.jd18
-rw-r--r--docs/html/images/ui/sample-linearlayout.pngbin12918 -> 9917 bytes
-rw-r--r--docs/html/tools/publishing/preparing.jd7
-rw-r--r--docs/html/training/implementing-navigation/ancestral.jd21
-rw-r--r--packages/Shell/res/values-af/strings.xml3
-rw-r--r--packages/Shell/res/values-am/strings.xml3
-rw-r--r--packages/Shell/res/values-ar/strings.xml3
-rw-r--r--packages/Shell/res/values-bg/strings.xml3
-rw-r--r--packages/Shell/res/values-ca/strings.xml3
-rw-r--r--packages/Shell/res/values-cs/strings.xml3
-rw-r--r--packages/Shell/res/values-da/strings.xml3
-rw-r--r--packages/Shell/res/values-de/strings.xml3
-rw-r--r--packages/Shell/res/values-el/strings.xml3
-rw-r--r--packages/Shell/res/values-en-rGB/strings.xml3
-rw-r--r--packages/Shell/res/values-en-rIN/strings.xml3
-rw-r--r--packages/Shell/res/values-es-rUS/strings.xml3
-rw-r--r--packages/Shell/res/values-es/strings.xml3
-rw-r--r--packages/Shell/res/values-et-rEE/strings.xml3
-rw-r--r--packages/Shell/res/values-fa/strings.xml3
-rw-r--r--packages/Shell/res/values-fi/strings.xml3
-rw-r--r--packages/Shell/res/values-fr-rCA/strings.xml3
-rw-r--r--packages/Shell/res/values-fr/strings.xml3
-rw-r--r--packages/Shell/res/values-hi/strings.xml3
-rw-r--r--packages/Shell/res/values-hr/strings.xml3
-rw-r--r--packages/Shell/res/values-hu/strings.xml3
-rw-r--r--packages/Shell/res/values-hy-rAM/strings.xml3
-rw-r--r--packages/Shell/res/values-in/strings.xml3
-rw-r--r--packages/Shell/res/values-it/strings.xml3
-rw-r--r--packages/Shell/res/values-iw/strings.xml3
-rw-r--r--packages/Shell/res/values-ja/strings.xml3
-rw-r--r--packages/Shell/res/values-ka-rGE/strings.xml3
-rw-r--r--packages/Shell/res/values-km-rKH/strings.xml3
-rw-r--r--packages/Shell/res/values-ko/strings.xml3
-rw-r--r--packages/Shell/res/values-lo-rLA/strings.xml3
-rw-r--r--packages/Shell/res/values-lt/strings.xml3
-rw-r--r--packages/Shell/res/values-lv/strings.xml3
-rw-r--r--packages/Shell/res/values-mn-rMN/strings.xml3
-rw-r--r--packages/Shell/res/values-ms-rMY/strings.xml3
-rw-r--r--packages/Shell/res/values-nb/strings.xml3
-rw-r--r--packages/Shell/res/values-nl/strings.xml3
-rw-r--r--packages/Shell/res/values-pl/strings.xml3
-rw-r--r--packages/Shell/res/values-pt-rPT/strings.xml3
-rw-r--r--packages/Shell/res/values-pt/strings.xml3
-rw-r--r--packages/Shell/res/values-ro/strings.xml3
-rw-r--r--packages/Shell/res/values-ru/strings.xml3
-rw-r--r--packages/Shell/res/values-sk/strings.xml3
-rw-r--r--packages/Shell/res/values-sl/strings.xml3
-rw-r--r--packages/Shell/res/values-sr/strings.xml3
-rw-r--r--packages/Shell/res/values-sv/strings.xml3
-rw-r--r--packages/Shell/res/values-sw/strings.xml3
-rw-r--r--packages/Shell/res/values-th/strings.xml3
-rw-r--r--packages/Shell/res/values-tl/strings.xml3
-rw-r--r--packages/Shell/res/values-tr/strings.xml3
-rw-r--r--packages/Shell/res/values-uk/strings.xml3
-rw-r--r--packages/Shell/res/values-vi/strings.xml3
-rw-r--r--packages/Shell/res/values-zh-rCN/strings.xml3
-rw-r--r--packages/Shell/res/values-zh-rHK/strings.xml3
-rw-r--r--packages/Shell/res/values-zh-rTW/strings.xml3
-rw-r--r--packages/Shell/res/values-zu/strings.xml3
-rw-r--r--packages/Shell/res/values/strings.xml6
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindow.java32
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java12
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java44
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityStack.java14
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java58
-rw-r--r--tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java17
-rw-r--r--tools/layoutlib/create/README.txt272
-rw-r--r--tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java34
-rw-r--r--tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java36
-rw-r--r--tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java5
-rw-r--r--tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java53
77 files changed, 539 insertions, 294 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index f239cc5997c2..199e5b1d6d37 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1487,6 +1487,9 @@
<!-- default window inset isRound property -->
<bool name="config_windowIsRound">false</bool>
+ <!-- default device has recents property -->
+ <bool name="config_hasRecents">true</bool>
+
<!-- Defines the default set of global actions. Actions may still be disabled or hidden based
on the current state of the device.
Each item must be one of the following strings:
@@ -1505,4 +1508,6 @@
<item>users</item>
</string-array>
+ <bool name="config_networkSamplingWakesDevice">true</bool>
+
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c5b8a5a82054..79dcde999983 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -258,6 +258,7 @@
<java-symbol type="bool" name="config_enable_emergency_call_while_sim_locked" />
<java-symbol type="bool" name="config_enable_puk_unlock_screen" />
<java-symbol type="bool" name="config_mms_content_disposition_support" />
+ <java-symbol type="bool" name="config_networkSamplingWakesDevice" />
<java-symbol type="bool" name="config_showMenuShortcutsWhenKeyboardPresent" />
<java-symbol type="bool" name="config_sip_wifi_only" />
<java-symbol type="bool" name="config_sms_capable" />
@@ -290,6 +291,7 @@
<java-symbol type="bool" name="config_forceDefaultOrientation" />
<java-symbol type="bool" name="config_wifi_batched_scan_supported" />
<java-symbol type="bool" name="config_windowIsRound" />
+ <java-symbol type="bool" name="config_hasRecents" />
<java-symbol type="integer" name="config_cursorWindowSize" />
<java-symbol type="integer" name="config_extraFreeKbytesAdjust" />
diff --git a/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java b/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java
index 22dce393f67d..411a3f894965 100644
--- a/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java
+++ b/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java
@@ -20,6 +20,8 @@ import android.app.Instrumentation;
import android.content.Context;
import android.os.Bundle;
+import junit.framework.Assert;
+
import java.util.Set;
public class BluetoothInstrumentation extends Instrumentation {
@@ -70,6 +72,8 @@ public class BluetoothInstrumentation extends Instrumentation {
getAddress();
} else if ("getBondedDevices".equals(command)) {
getBondedDevices();
+ } else if ("enableBtSnoop".equals(command)) {
+ enableBtSnoop();
} else {
finish(null);
}
@@ -112,6 +116,12 @@ public class BluetoothInstrumentation extends Instrumentation {
finish(mSuccessResult);
}
+ public void enableBtSnoop() {
+ Assert.assertTrue("failed to enable snoop log",
+ getBluetoothAdapter().configHciSnoopLog(true));
+ finish(mSuccessResult);
+ }
+
public void finish(Bundle result) {
if (result == null) {
result = new Bundle();
diff --git a/docs/html/google/play-services/ads.jd b/docs/html/google/play-services/ads.jd
index 18579c7f116d..c1a59b8264cb 100644
--- a/docs/html/google/play-services/ads.jd
+++ b/docs/html/google/play-services/ads.jd
@@ -59,6 +59,11 @@ header.hide=1
<h4>Flexible and powerful tools </h4>
<p>Filters and controls help you manage your ads. If you want to use multiple ad
networks, you can do that too, with free ad network mediation.</p>
+
+ <h4>Ad Policy Compliant</h4>
+ <p>The Google Mobile Ads SDK available in Google Play services is compliant with
+ Google Play Ad Poilcy regarding the usage of
+ <a href="{@docRoot}google/play-services/id.html">advertising ID</a>.</p>
</div>
<div class="col-6 normal-links">
diff --git a/docs/html/google/play-services/id.jd b/docs/html/google/play-services/id.jd
index 466dfef99573..d5acf76f6e48 100644
--- a/docs/html/google/play-services/id.jd
+++ b/docs/html/google/play-services/id.jd
@@ -55,6 +55,19 @@ href="{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.
</div>
</div>
+<p class="caution" style=
+"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
+ As a reminder, please note that starting <strong>1 August 2014</strong>, new
+ apps and app updates distributed through Google Play must use the advertising
+ ID in lieu of any other persistent identifiers for any advertising purposes,
+ on devices that support the advertising ID.<br>
+ <br>
+ To learn how to check your app's compliance through the Developer Console, or
+ for details on the associated developer policy changes, please see the
+ <a href=
+ "https://support.google.com/googleplay/android-developer/answer/6048248">Advertising
+ ID topic</a> in the Google Play developer help center.
+</p>
<h2 id="get_started">Using the Advertising ID</h2>
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index a8d7615fda1f..3c623f6cc2e2 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -453,7 +453,7 @@ Similarly, a new instance of a "{@code singleTop}" activity may also be
created to handle a new intent. However, if the target task already has an
existing instance of the activity at the top of its stack, that instance
will receive the new intent (in an
-<code>{@link android.app.Activity#onNewIntent onNewIntent()}</code> call);
+{@link android.app.Activity#onNewIntent onNewIntent()} call);
a new instance is not created.
In other circumstances &mdash; for example, if an existing instance of the
"{@code singleTop}" activity is in the target task, but not at the top of
@@ -461,6 +461,22 @@ the stack, or if it's at the top of a stack, but not in the target task
&mdash; a new instance would be created and pushed on the stack.
</p>
+<p>Similarly, if you
+<a href="{@docRoot}training/implementing-navigation/ancestral.html">navigate
+up</a> to an activity on the current stack, the behavior is determined by the
+parent activity's launch mode. If the parent activity has launch mode {@code
+singleTop} (or the <code>up</code> intent contains {@link
+android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}), the parent is brought to the
+top of the stack, and its state is preserved. The navigation intent is received
+by the parent activity's {@link android.app.Activity#onNewIntent onNewIntent()}
+method. If the parent activity has launch mode {@code standard} (and the
+<code>up</code> intent does not contain {@link
+android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}), the current activity and its
+parent are both popped off the stack, and a new instance of the parent activity
+is created to receive the navigation intent.
+</p>
+
+
<p>
The "{@code singleTask}" and "{@code singleInstance}" modes also differ from
each other in only one respect: A "{@code singleTask}" activity allows other
diff --git a/docs/html/images/ui/sample-linearlayout.png b/docs/html/images/ui/sample-linearlayout.png
index c4beb93a6d07..04c9259ddf23 100644
--- a/docs/html/images/ui/sample-linearlayout.png
+++ b/docs/html/images/ui/sample-linearlayout.png
Binary files differ
diff --git a/docs/html/tools/publishing/preparing.jd b/docs/html/tools/publishing/preparing.jd
index 7192aa83df8a..5265fce93d91 100644
--- a/docs/html/tools/publishing/preparing.jd
+++ b/docs/html/tools/publishing/preparing.jd
@@ -191,6 +191,13 @@ were created in your project.</p>
added to your code, such as {@link android.os.Debug#startMethodTracing()} and
{@link android.os.Debug#stopMethodTracing()} method calls.</p>
+<p class="caution"><strong>Important:</strong> Ensure that you disable debugging for
+your app if using {@link android.webkit.WebView} to display paid for content or if using JavaScript
+interfaces, since debugging allows users to inject scripts and extract content using Chrome
+DevTools. To disable debugging, use the
+{@link android.webkit.WebView#setWebContentsDebuggingEnabled(boolean) WebView.setWebContentsDebuggingEnabled()}
+method.</p>
+
<h4>Clean up your project directories</h4>
<p>Clean up your project and make sure it conforms to the directory structure described in <a
diff --git a/docs/html/training/implementing-navigation/ancestral.jd b/docs/html/training/implementing-navigation/ancestral.jd
index 12d500589866..f4d7c1a4093f 100644
--- a/docs/html/training/implementing-navigation/ancestral.jd
+++ b/docs/html/training/implementing-navigation/ancestral.jd
@@ -133,7 +133,25 @@ android.support.v4.app.NavUtils} class's static method,
navigateUpFromSameTask()}. When you call this method, it finishes the current activity and
starts (or resumes) the appropriate parent activity.
If the target parent activity is in the task's back stack, it is brought
-forward as defined by {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.</p>
+forward. The way it is brought forward depends on whether the parent activity
+is able to handle an {@link
+android.app.Activity#onNewIntent onNewIntent()} call:</p>
+
+<ul>
+ <li>If the parent activity has launch mode <a
+ href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+ &lt;singleTop>}</a>, or the <code>up</code> intent contains {@link
+ android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}, the parent activity is
+ brought to the top of the stack, and receives the intent through its
+ {@link android.app.Activity#onNewIntent onNewIntent()} method.</li>
+
+ <li>If the parent activity has launch mode <a
+ href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+ &lt;standard>}</a>, and the <code>up</code> intent does not contain
+ {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}, the parent activity
+ is popped off the stack, and a new instance of that activity is created on
+ top of the stack to receive the intent.</li>
+</ul>
<p>For example:</p>
@@ -157,7 +175,6 @@ activity was started in a task that belongs to a different app, then
navigating <em>Up</em> should create a new task that belongs to your app, which
requires that you create a new back stack.</p>
-
<h3 id="BuildBackStack">Navigate up with a new back stack</h3>
<p>If your activity provides any <a
diff --git a/packages/Shell/res/values-af/strings.xml b/packages/Shell/res/values-af/strings.xml
index 3dc6a0fe380d..8c4f75f4c212 100644
--- a/packages/Shell/res/values-af/strings.xml
+++ b/packages/Shell/res/values-af/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Tuisskerm"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Foutverslag vasgevang"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Raak om jou foutverslag te deel"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swiep na links om jou foutverslag te deel"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Raak om jou foutverslag te deel"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Foutverslae bevat data van die stelsel se verskillende loglĂȘers af, insluitend persoonlike en private inligting. Deel foutverslae net met programme en mense wat jy vertrou."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Wys hierdie boodskap volgende keer"</string>
</resources>
diff --git a/packages/Shell/res/values-am/strings.xml b/packages/Shell/res/values-am/strings.xml
index c90a5f519908..af84a09f4489 100644
--- a/packages/Shell/res/values-am/strings.xml
+++ b/packages/Shell/res/values-am/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ቀፎ"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"á‹šáˆłáŠ•áŠ« áˆȘፖርቔ ተይዟል"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"á‹šáˆłáŠ•áŠ« áˆȘፖርቔዎን ለማጋራቔ ይንክኩ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"á‹šáˆłáŠ•áŠ« áˆȘፖርቔዎን ለማጋራቔ ወደ ግራ ያንሞራቔቱ"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"á‹šáˆłáŠ•áŠ« áˆȘፖርቔዎን ለማጋራቔ ይንክኩ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"á‹šáˆłáŠ•áŠ« áˆȘፖርቶቜ ዹግል መሹጃን ጹምሼ áŠšá‰ áˆ­áŠ«á‰ł ዚሔርዓቱ ምዝግቄ áˆ›áˆ”á‰łá‹ˆáˆ»á‹Žá‰œ ዹመጣ ውሂቄን ይዟል፱ á‹šáˆłáŠ•áŠ« áˆȘፖርቶቜ ለሚያምኗ቞ው መተግበáˆȘያዎቜን ኄና ሰዎቜን ቄቻ á‹«áŒ‹áˆ©áą"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ይህን መልዕክቔ በሚቀጄለው ጊዜ አሳይ"</string>
</resources>
diff --git a/packages/Shell/res/values-ar/strings.xml b/packages/Shell/res/values-ar/strings.xml
index 6a595d5e2ed6..69d7d3f1215c 100644
--- a/packages/Shell/res/values-ar/strings.xml
+++ b/packages/Shell/res/values-ar/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ŰȘم Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى ŰȘÙ‚Ű±ÙŠŰ± Ű§Ù„ŰŁŰźŰ·Ű§ŰĄ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Ű§Ù„Ù…Űł Ù„Ù…ŰŽŰ§Ű±ÙƒŰ© ŰȘÙ‚Ű±ÙŠŰ± Ű§Ù„ŰŁŰźŰ·Ű§ŰĄ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Ù…Ű±Ű± ۚ۳۱ŰčŰ© لليمين Ù„Ù…ŰŽŰ§Ű±ÙƒŰ© ŰȘÙ‚Ű±ÙŠŰ± Ű§Ù„ŰźŰ·ŰŁ"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Ű§Ù„Ù…Űł Ù„Ù…ŰŽŰ§Ű±ÙƒŰ© ŰȘÙ‚Ű±ÙŠŰ± Ű§Ù„ŰŁŰźŰ·Ű§ŰĄ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ŰȘŰ­ŰȘوي ŰȘÙ‚Ű§Ű±ÙŠŰ± Ű§Ù„ŰŁŰźŰ·Ű§ŰĄ Űčلى ŰšÙŠŰ§Ù†Ű§ŰȘ من Ù…Ù„ÙŰ§ŰȘ ŰłŰŹÙ„Ű§ŰȘ Ű§Ù„Ù†ŰžŰ§Ù… Ű§Ù„Ù…ŰȘنوŰčŰ©ŰŒ ŰšÙ…Ű§ في Ű°Ù„Ùƒ مŰčÙ„ÙˆÙ…Ű§ŰȘ ŰŽŰźŰ”ÙŠŰ© ÙˆŰźŰ§Ű”Ű©. Ù„Ű§ ŰȘŰŽŰ§Ű±Ùƒ ŰȘÙ‚Ű§Ű±ÙŠŰ± Ű§Ù„ŰŁŰźŰ·Ű§ŰĄ Ű„Ù„Ű§ مŰč Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ ÙˆŰ§Ù„ŰŁŰŽŰźŰ§Ű” Ű§Ù„Ù…ÙˆŰ«ÙˆÙ‚ ŰšÙ‡Ù…."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ű„ŰžÙ‡Ű§Ű± Ù‡Ű°Ù‡ Ű§Ù„Ű±ŰłŰ§Ù„Ű© في Ű§Ù„Ù…Ű±Ű© Ű§Ù„Ù‚Ű§ŰŻÙ…Ű©"</string>
</resources>
diff --git a/packages/Shell/res/values-bg/strings.xml b/packages/Shell/res/values-bg/strings.xml
index 2fae95310712..f7ae49c193c9 100644
--- a/packages/Shell/res/values-bg/strings.xml
+++ b/packages/Shell/res/values-bg/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ĐšĐŸĐŒĐ°ĐœĐŽĐ”Đœ рДЎ"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ОтчДтът за ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐœĐž ĐłŃ€Đ”ŃˆĐșĐž Đ” Đ·Đ°ĐżĐžŃĐ°Đœ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Đ”ĐŸĐșĐŸŃĐœĐ”Ń‚Đ”, за Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃ‚Đ” ĐŸŃ‚Ń‡Đ”Ń‚Đ° сО за ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐœĐž ĐłŃ€Đ”ŃˆĐșĐž"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŸŃ€Đ”ĐșараĐčтД пръст ĐœĐ°Đ»ŃĐČĐŸ, за Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃ‚Đ” ŃĐžĐłĐœĐ°Đ»Đ° сО за ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐœĐ° ĐłŃ€Đ”ŃˆĐșа"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Đ”ĐŸĐșĐŸŃĐœĐ”Ń‚Đ”, за Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃ‚Đ” ĐŸŃ‚Ń‡Đ”Ń‚Đ° сО за ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐœĐž ĐłŃ€Đ”ŃˆĐșĐž"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ОтчДтОтД за ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐœĐž ĐłŃ€Đ”ŃˆĐșĐž съЎържат ĐŽĐ°ĐœĐœĐž ĐŸŃ‚ Ń€Đ°Đ·Đ»ĐžŃ‡ĐœĐž Ń€Đ”ĐłĐžŃŃ‚Ń€Đ°Ń†ĐžĐŸĐœĐœĐž фаĐčĐ»ĐŸĐČĐ” ĐœĐ° ŃĐžŃŃ‚Đ”ĐŒĐ°Ń‚Đ°, ĐČĐșĐ»ŃŽŃ‡ĐžŃ‚Đ”Đ»ĐœĐŸ Đ»ĐžŃ‡ĐœĐ° Đž ĐżĐŸĐČĐ”Ń€ĐžŃ‚Đ”Đ»ĐœĐ° ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ. ĐĄĐżĐŸĐŽĐ”Đ»ŃĐčтД гО ŃĐ°ĐŒĐŸ с ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ Đž Ń…ĐŸŃ€Đ°, ĐœĐ° ĐșĐŸĐžŃ‚ĐŸ ĐžĐŒĐ°Ń‚Đ” ĐŽĐŸĐČДрОД."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐąĐŸĐČа ŃŃŠĐŸĐ±Ń‰Đ”ĐœĐžĐ” Ўа сД ĐżĐŸĐșазĐČа слДЎĐČащоя път"</string>
</resources>
diff --git a/packages/Shell/res/values-ca/strings.xml b/packages/Shell/res/values-ca/strings.xml
index 8bf368a051ae..fa4d1f3b8bc8 100644
--- a/packages/Shell/res/values-ca/strings.xml
+++ b/packages/Shell/res/values-ca/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ProtecciĂł"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"S\'ha registrat l\'informe d\'error"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Toca aquĂ­ per compartir el teu informe d\'error."</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Fes lliscar el dit cap a l\'esquerra per compartir l\'informe d\'errors."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toca aquĂ­ per compartir el teu informe d\'error."</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Els informes d\'error contenen dades dels diferents fitxers de registre del sistema, inclosa informació privada i personal. Comparteix els informes d\'error només amb les aplicacions i amb les persones en qui confies."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostra aquest missatge la propera vegada"</string>
</resources>
diff --git a/packages/Shell/res/values-cs/strings.xml b/packages/Shell/res/values-cs/strings.xml
index 3f1c9219da72..10ef1a6c18c7 100644
--- a/packages/Shell/res/values-cs/strings.xml
+++ b/packages/Shell/res/values-cs/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Prostƙedí"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Bylo vytvoƙeno chybovĂ© hlĂĄĆĄenĂ­"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ChybovĂ© hlĂĄĆĄenĂ­ mĆŻĆŸete sdĂ­let klepnutĂ­m."</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Chcete-li hláơení chyby sdílet, pƙejeďte doleva."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ChybovĂ© hlĂĄĆĄenĂ­ mĆŻĆŸete sdĂ­let klepnutĂ­m."</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ChybovĂĄ hlĂĄĆĄenĂ­ obsahujĂ­ data z rĆŻznĂœch souborĆŻ protokolĆŻ systĂ©mu včetně osobnĂ­ch a soukromĂœch informacĂ­. ChybovĂĄ hlĂĄĆĄenĂ­ sdĂ­lejte pouze s aplikacemi a uĆŸivateli, kterĂœm dĆŻvěƙujete."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Zobrazit tuto zprávu pƙíơtě"</string>
</resources>
diff --git a/packages/Shell/res/values-da/strings.xml b/packages/Shell/res/values-da/strings.xml
index fa30c965a1f4..3e58bc273aea 100644
--- a/packages/Shell/res/values-da/strings.xml
+++ b/packages/Shell/res/values-da/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Fejlrapporten er registreret"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Tryk for at dele din fejlrapport"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Stryg til venstre for at dele din fejlrapport"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tryk for at dele din fejlrapport"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Fejlrapporter indeholder data fra systemets forskellige logfiler, f.eks. personlige og private oplysninger. Del kun fejlrapporter med apps og personer, du har tillid til."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Vis denne underretning nĂŠste gang"</string>
</resources>
diff --git a/packages/Shell/res/values-de/strings.xml b/packages/Shell/res/values-de/strings.xml
index 34481ba6ad31..f7387ffc1d72 100644
--- a/packages/Shell/res/values-de/strings.xml
+++ b/packages/Shell/res/values-de/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Fehlerbericht erfasst"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Tippen, um Fehlerbericht zu teilen"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Wischen Sie nach links, um Ihren Fehlerbericht zu teilen."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tippen, um Fehlerbericht zu teilen"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Fehlerberichte enthalten Daten aus verschiedenen Protokolldateien des Systems, darunter auch personenbezogene und private Daten. Teilen Sie Fehlerberichte nur mit Apps und Personen, denen Sie vertrauen."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Diese Nachricht nÀchstes Mal zeigen"</string>
</resources>
diff --git a/packages/Shell/res/values-el/strings.xml b/packages/Shell/res/values-el/strings.xml
index 9b1eb7b77b2d..529b420c9c73 100644
--- a/packages/Shell/res/values-el/strings.xml
+++ b/packages/Shell/res/values-el/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ÎšÎ­Î»Ï…Ï†ÎżÏ‚"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Η Î»ÎźÏˆÎ· της Î±ÎœÎ±Ï†ÎżÏÎŹÏ‚ ÎźÏ„Î±Îœ ΔπÎčÏ„Ï…Ï‡ÎźÏ‚"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Î‘ÎłÎłÎŻÎŸÏ„Î” ÎłÎčα Μα ÎŒÎżÎčÏÎ±ÏƒÏ„Î”ÎŻÏ„Î” τη Î±ÎœÎ±Ï†ÎżÏÎŹ ÏƒÏ†Î±Î»ÎŒÎŹÏ„Ï‰Îœ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ÎŁÏÏÎ”Ï„Î” Ï€ÏÎżÏ‚ τα αρÎčÏƒÏ„Î”ÏÎŹ ÎłÎčα ÎșÎżÎčÎœÎź Ï‡ÏÎźÏƒÎ· της Î±ÎœÎ±Ï†ÎżÏÎŹÏ‚ ÏƒÏ†Î±Î»ÎŒÎŹÏ„Ï‰Îœ"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Î‘ÎłÎłÎŻÎŸÏ„Î” ÎłÎčα Μα ÎŒÎżÎčÏÎ±ÏƒÏ„Î”ÎŻÏ„Î” τη Î±ÎœÎ±Ï†ÎżÏÎŹ ÏƒÏ†Î±Î»ÎŒÎŹÏ„Ï‰Îœ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ΟÎč Î±ÎœÎ±Ï†ÎżÏÎ­Ï‚ ÏƒÏ†Î±Î»ÎŒÎŹÏ„Ï‰Îœ πΔρÎčÎ­Ï‡ÎżÏ…Îœ ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± από τα ÎŽÎčÎŹÏ†ÎżÏÎ± Î±ÏÏ‡Î”ÎŻÎ± ÎșÎ±Ï„Î±ÎłÏÎ±Ï†ÎźÏ‚ Ï„ÎżÏ… ÏƒÏ…ÏƒÏ„ÎźÎŒÎ±Ï„ÎżÏ‚, συΌπΔρÎčλαΌÎČÎ±ÎœÎżÎŒÎ­ÎœÏ‰Îœ Ï€ÏÎżÏƒÏ‰Ï€ÎčÎșώΜ ÎșαÎč ÎčÎŽÎčωτÎčÎșώΜ Ï€Î»Î·ÏÎżÏ†ÎżÏÎčώΜ. Να ÎŒÎżÎčÏÎŹÎ¶Î”ÏƒÏ„Î” Î±ÎœÎ±Ï†ÎżÏÎ­Ï‚ ÏƒÏ†Î±Î»ÎŒÎŹÏ„Ï‰Îœ ÎŒÏŒÎœÎż ΌΔ Î”Ï†Î±ÏÎŒÎżÎłÎ­Ï‚ ÎșαÎč ÎŹÏ„ÎżÎŒÎ± Ï€ÎżÏ… ΔΌπÎčστΔύΔστΔ."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Î•ÎŒÏ†ÎŹÎœÎčση Î±Ï…Ï„ÎżÏ Ï„ÎżÏ… ÎŒÎ·ÎœÏÎŒÎ±Ï„ÎżÏ‚ τηΜ ΔπόΌΔΜη Ï†ÎżÏÎŹ"</string>
</resources>
diff --git a/packages/Shell/res/values-en-rGB/strings.xml b/packages/Shell/res/values-en-rGB/strings.xml
index 68708e0c576f..fab4223c37cf 100644
--- a/packages/Shell/res/values-en-rGB/strings.xml
+++ b/packages/Shell/res/values-en-rGB/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Bug report captured"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Touch to share your bug report"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swipe left to share your bug report"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Touch to share your bug report"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people that you trust."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Show this message next time"</string>
</resources>
diff --git a/packages/Shell/res/values-en-rIN/strings.xml b/packages/Shell/res/values-en-rIN/strings.xml
index 68708e0c576f..fab4223c37cf 100644
--- a/packages/Shell/res/values-en-rIN/strings.xml
+++ b/packages/Shell/res/values-en-rIN/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Bug report captured"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Touch to share your bug report"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swipe left to share your bug report"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Touch to share your bug report"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people that you trust."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Show this message next time"</string>
</resources>
diff --git a/packages/Shell/res/values-es-rUS/strings.xml b/packages/Shell/res/values-es-rUS/strings.xml
index f1ec75c1366e..d01561ca876a 100644
--- a/packages/Shell/res/values-es-rUS/strings.xml
+++ b/packages/Shell/res/values-es-rUS/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Informe de errores capturado"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Toca para compartir tu informe de errores."</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Desliza el dedo hacia la izquierda para compartir el informe de errores."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toca para compartir tu informe de errores."</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Los informes de errores contienen datos de los distintos archivos de registro del sistema, incluida la informaciĂłn personal y privada. Comparte los informes de errores Ășnicamente con aplicaciones y personas en las que confĂ­es."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar este mensaje la prĂłxima vez"</string>
</resources>
diff --git a/packages/Shell/res/values-es/strings.xml b/packages/Shell/res/values-es/strings.xml
index 7990672b97ce..c9a9bfa2e821 100644
--- a/packages/Shell/res/values-es/strings.xml
+++ b/packages/Shell/res/values-es/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Informe de error capturado"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Toca para compartir tu informe de error"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Desliza el dedo hacia la izquierda para compartir el informe de error"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toca para compartir tu informe de error"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Los informes de errores contienen datos de los distintos archivos de registro del sistema, incluida informaciĂłn personal y privada. Comparte los informes de errores Ășnicamente con aplicaciones y usuarios en los que confĂ­es."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar este mensaje la prĂłxima vez"</string>
</resources>
diff --git a/packages/Shell/res/values-et-rEE/strings.xml b/packages/Shell/res/values-et-rEE/strings.xml
index 77881582cc8b..7de367d1553c 100644
--- a/packages/Shell/res/values-et-rEE/strings.xml
+++ b/packages/Shell/res/values-et-rEE/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Kest"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Veaaruanne jÀÀdvustati"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Veaaruande jagamiseks puudutage"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Veaaruande jagamiseks pĂŒhkige vasakule"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Veaaruande jagamiseks puudutage"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Veaaruanded sisaldavad andmeid erinevatest sĂŒsteemi logifailidest, sh isiklikku ja privaatset teavet. Jagage veaaruandeid ainult usaldusvÀÀrsete rakenduste ja inimestega."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Kuva see sÔnum jÀrgmisel korral"</string>
</resources>
diff --git a/packages/Shell/res/values-fa/strings.xml b/packages/Shell/res/values-fa/strings.xml
index 2d2c2236cbc5..a737a778c975 100644
--- a/packages/Shell/res/values-fa/strings.xml
+++ b/packages/Shell/res/values-fa/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù„ ŰŻŰ±ÛŒŰ§ÙŰȘ ŰŽŰŻ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ŰŹÙ‡ŰȘ ۧێŰȘŰ±Ű§Ú©â€ŒÚŻŰ°Ű§Ű±ÛŒ ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù„ ŰźÙˆŰŻ Ù„Ù…Űł Ú©Ù†ÛŒŰŻ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ŰšŰ±Ű§ÛŒ ۧێŰȘŰ±Ű§Ú©â€ŒÚŻŰ°Ű§Ű±ÛŒ ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù„ŰŒ ŰšÙ‡ ŰȘÙ†ŰŻÛŒ ŰąÙ† ۱ۧ ŰšÙ‡ Ú†ÙŸ ŰšÚ©ŰŽÛŒŰŻ"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ŰŹÙ‡ŰȘ ۧێŰȘŰ±Ű§Ú©â€ŒÚŻŰ°Ű§Ű±ÛŒ ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù„ ŰźÙˆŰŻ Ù„Ù…Űł Ú©Ù†ÛŒŰŻ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ÚŻŰČŰ§Ű±ŰŽâ€ŒÙ‡Ű§ÛŒ Ű§ŰŽÚ©Ű§Ù„ Ű­Ű§ÙˆÛŒ ŰŻŰ§ŰŻÙ‡â€ŒÙ‡Ű§ÛŒÛŒ ۧŰČ ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ÛŒ ÚŻŰČۧ۱ێ Ù…ŰźŰȘلف ۯ۱ ŰłÛŒŰłŰȘم Ù‡ŰłŰȘÙ†ŰŻŰŒ ŰŽŰ§Ù…Ù„ Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰŽŰźŰ”ÛŒ و ŰźŰ”ÙˆŰ”ÛŒ. ÚŻŰČŰ§Ű±ŰŽâ€ŒÙ‡Ű§ÛŒ Ű§ŰŽÚ©Ű§Ù„ ۱ۧ ÙÙ‚Ű· ۚۧ Ű§ÙŰ±Ű§ŰŻ و ŰšŰ±Ù†Ű§Ù…Ù‡â€ŒÙ‡Ű§ÛŒ Ù…ÙˆŰ±ŰŻ ۧŰčŰȘÙ…Ű§ŰŻ ŰźÙˆŰŻ ŰšÙ‡ ۧێŰȘ۱ۧک ŰšÚŻŰ°Ű§Ű±ÛŒŰŻ."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ŰŻÙŰčه ŰšŰčŰŻ Ű§ÛŒÙ† ÙŸÛŒŰ§Ù… Ù†ŰŽŰ§Ù† ŰŻŰ§ŰŻÙ‡ ŰŽÙˆŰŻ"</string>
</resources>
diff --git a/packages/Shell/res/values-fi/strings.xml b/packages/Shell/res/values-fi/strings.xml
index ee57279f4a81..247cb6fc8028 100644
--- a/packages/Shell/res/values-fi/strings.xml
+++ b/packages/Shell/res/values-fi/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Komentotulkki"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Virheraportti tallennettu"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Jaa virheraportti koskettamalla tÀtÀ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Jaa virheraportti pyyhkÀisemÀllÀ vasemmalle"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Jaa virheraportti koskettamalla tÀtÀ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Virheraportit sisÀltÀvÀt jÀrjestelmÀn lokitietoja, ja niihin voi sisÀltyÀ henkilökohtaisia ja yksityisiÀ tietoja. Jaa virheraportteja vain luotettaville sovelluksille ja kÀyttÀjille."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"NÀytÀ tÀmÀ viesti seuraavalla kerralla"</string>
</resources>
diff --git a/packages/Shell/res/values-fr-rCA/strings.xml b/packages/Shell/res/values-fr-rCA/strings.xml
index c672f23cba1b..844c20970b69 100644
--- a/packages/Shell/res/values-fr-rCA/strings.xml
+++ b/packages/Shell/res/values-fr-rCA/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Rapport de bogue enregistré"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Appuyer ici pour partager votre rapport de bogue"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Faites glisser le doigt vers la gauche pour partager votre rapport d\'erreur."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Appuyer ici pour partager votre rapport de bogue"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Les rapports de bogue contiennent des données des fichiers journaux du systÚme, y compris des informations personnelles et privées. Ne partagez les rapports de bogue qu\'avec les applications et les personnes que vous estimez fiables."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Afficher ce message la prochaine fois"</string>
</resources>
diff --git a/packages/Shell/res/values-fr/strings.xml b/packages/Shell/res/values-fr/strings.xml
index 12f5e88998bf..c52dd8d1d686 100644
--- a/packages/Shell/res/values-fr/strings.xml
+++ b/packages/Shell/res/values-fr/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Rapport de bug enregistré"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Appuyez ici pour partager le rapport de bug"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Faites glisser le doigt vers la gauche pour partager votre rapport d\'erreur."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Appuyez ici pour partager le rapport de bug"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Les rapports de bug contiennent des données des fichiers journaux du systÚme, y compris des informations personnelles et privées. Ne partagez les rapports de bug qu\'avec les applications et les personnes que vous estimez fiables."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Afficher ce message la prochaine fois"</string>
</resources>
diff --git a/packages/Shell/res/values-hi/strings.xml b/packages/Shell/res/values-hi/strings.xml
index f8893112f677..daf65537eafa 100644
--- a/packages/Shell/res/values-hi/strings.xml
+++ b/packages/Shell/res/values-hi/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"à€¶à„‡à€Č"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"à€Źà€— à€°à€żà€Șà„‹à€°à„à€Ÿ à€•à„ˆà€Șà„à€šà€° à€•à€° à€Čà„€ à€—à€ˆ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"à€…à€Șà€šà„€ à€Źà€— à€°à€żà€Șà„‹à€°à„à€Ÿ à€žà€Ÿà€à€Ÿ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€žà„à€Șà€°à„à€¶ à€•à€°à„‡à€‚"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"à€…à€Șà€šà„€ à€Źà€— à€°à€żà€Șà„‹à€°à„à€Ÿ à€žà€Ÿà€à€Ÿ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€Źà€Ÿà€à€‚ à€žà„à€”à€Ÿà€‡à€Ș à€•à€°à„‡à€‚"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"à€…à€Șà€šà„€ à€Źà€— à€°à€żà€Șà„‹à€°à„à€Ÿ à€žà€Ÿà€à€Ÿ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€žà„à€Șà€°à„à€¶ à€•à€°à„‡à€‚"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"à€Źà€— à€°à€żà€Șà„‹à€°à„à€Ÿ à€źà„‡à€‚ à€”à„à€Żà€•à„à€€à€żà€—à€€ à€”à€° à€šà€żà€œà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€žà€čà€żà€€, à€žà€żà€žà„à€Ÿà€ź à€•à„€ à€”à€żà€­à€żà€šà„à€š à€Čà„‰à€— à€«à€Œà€Ÿà€‡à€Čà„‹à€‚ à€•à€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€čà„‹à€€à€Ÿ à€čà„ˆ. à€Źà€— à€°à€żà€Șà„‹à€°à„à€Ÿ à€•à„‡à€”à€Č à€”à€żà€¶à„à€”à€žà€šà„€à€Ż à€à€Șà„à€ž à€”à€° à€”à„à€Żà€•à„à€€à€żà€Żà„‹à€‚ à€žà„‡ à€čà„€ à€žà€Ÿà€à€Ÿ à€•à€°à„‡à€‚."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"à€Żà€č à€žà€‚à€Šà„‡à€¶ à€…à€—à€Čà„€ à€Źà€Ÿà€° à€Šà€żà€–à€Ÿà€à€‚"</string>
</resources>
diff --git a/packages/Shell/res/values-hr/strings.xml b/packages/Shell/res/values-hr/strings.xml
index 2c4ea2317d6e..da01dd8da172 100644
--- a/packages/Shell/res/values-hr/strings.xml
+++ b/packages/Shell/res/values-hr/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Ljuska"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Prijava programske pogreĆĄke snimljena je"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Dodirnite za dijeljenje prijave programske pogreĆĄke"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Prijeđite prstom ulijevo da biste poslali izvjeơće o programskim pogreơkama"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Dodirnite za dijeljenje prijave programske pogreĆĄke"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Prijave programskih pogreĆĄaka sadrĆŸavaju podatke iz različitih datoteka zapisnika sustava, uključujući osobne i privatne informacije. Prijave programskih pogreĆĄaka dijelite samo s aplikacijama i osobama koje smatrate pouzdanima."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"PrikaĆŸi tu poruku sljedeći put"</string>
</resources>
diff --git a/packages/Shell/res/values-hu/strings.xml b/packages/Shell/res/values-hu/strings.xml
index 8d684da0855c..0ebdc3d1cf35 100644
--- a/packages/Shell/res/values-hu/strings.xml
+++ b/packages/Shell/res/values-hu/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Héj"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Programhiba-jelentés rögzítve"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Érintse meg a programhiba-jelentĂ©s megosztĂĄsĂĄhoz"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"HĂșzza ujjĂĄt balra a hibajelentĂ©s megosztĂĄsĂĄhoz"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Érintse meg a programhiba-jelentĂ©s megosztĂĄsĂĄhoz"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"A programhiba-jelentĂ©sek a rendszer kĂŒlönfĂ©le naplĂłfĂĄjljaibĂłl szĂĄrmazĂł adatokat tartalmaznak, köztĂŒk szemĂ©lyes Ă©s magĂĄnjellegƱ informĂĄciĂłkat is. Csak olyan alkalmazĂĄsokkal Ă©s szemĂ©lyekkel osszon meg programhiba-jelentĂ©seket, amelyekben vagy akikben megbĂ­zik."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Üzenet mutatĂĄsa legközelebb"</string>
</resources>
diff --git a/packages/Shell/res/values-hy-rAM/strings.xml b/packages/Shell/res/values-hy-rAM/strings.xml
index ea7fa9f7cef0..80b1ccb9073e 100644
--- a/packages/Shell/res/values-hy-rAM/strings.xml
+++ b/packages/Shell/res/values-hy-rAM/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ÔœŐ„ÖŐ«"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ŐŽÖ€Ő«ŐșŐĄŐŻŐ« ՊՄկ՞ւՔց ŐœŐżŐĄÖŐŸŐ„Ö"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ՀŐșŐ„Ö„` Ő±Ő„Ö€ ŐŸÖ€Ő«ŐșŐĄŐŻŐ« ŐŽŐĄŐœŐ«Ő¶ ՊՄկ՞ւՔց՚ ŐżŐĄÖ€ŐĄŐźŐ„ŐŹŐžÖ‚ հածար"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ŐŐĄŐ°Ő„ÖÖ€Ő„Ö„ Ő±ŐĄŐ­Ő ŐœŐ­ŐĄŐŹŐ« Ő°ŐĄŐ·ŐŸŐ„ŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Őš Ő°ŐĄŐŽÖ…ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„ŐŹŐžÖ‚ հածար"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ՀŐșŐ„Ö„` Ő±Ő„Ö€ ŐŸÖ€Ő«ŐșŐĄŐŻŐ« ŐŽŐĄŐœŐ«Ő¶ ՊՄկ՞ւՔց՚ ŐżŐĄÖ€ŐĄŐźŐ„ŐŹŐžÖ‚ հածար"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ŐŽÖ€Ő«ŐșŐĄŐŻŐ« ՊՄկ՞ւՔցնՄր՚ ŐșŐĄÖ€ŐžÖ‚Ő¶ŐĄŐŻŐžÖ‚ŐŽ Ő„Ő¶ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€ Ő°ŐĄŐŽŐĄŐŻŐĄÖ€ŐŁŐ« ŐżŐĄÖ€ŐąŐ„Ö€ ŐŽŐžÖ‚ŐżÖ„Ő« ֆեՔՏՄրից, ŐĄŐ”Ő€ Ő©ŐŸŐžÖ‚ŐŽ Ő¶ŐĄÖ‡ ŐĄŐ¶Ő°ŐĄŐżŐĄŐŻŐĄŐ¶ ​​և ŐŁŐĄŐČŐżŐ¶Ő« ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€: ŐŽÖ€Ő«ŐșŐĄŐŻŐ« ŐŠŐ„ŐŻŐžÖ‚Ő”ÖŐ¶Ő„Ö€ŐšÂ ŐŻŐ«ŐœŐ„Ö„ ŐŽŐ«ŐĄŐ”Ő¶ ŐĄŐ”Ő¶ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Ő« և ՎերՀկենց Ő°Ő„Őż, ՞ր՞նց ŐŸŐœŐżŐĄŐ°ŐžÖ‚ŐŽ Ő„Ö„:"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ô±Ő”Őœ Ő°ŐĄŐČŐžÖ€Ő€ŐĄŐŁÖ€ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Őš ց՞ւՔց ŐżŐĄŐŹ Ő°ŐĄŐ»ŐžÖ€Ő€ ŐĄŐ¶ŐŁŐĄŐŽ"</string>
</resources>
diff --git a/packages/Shell/res/values-in/strings.xml b/packages/Shell/res/values-in/strings.xml
index 8ea2584802ea..b1c7293c7d91 100644
--- a/packages/Shell/res/values-in/strings.xml
+++ b/packages/Shell/res/values-in/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Kerangka"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Laporan bug tercatat"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Sentuh untuk membagikan laporan bug Anda"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Gesek ke kiri untuk membagikan laporan bug Anda"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Sentuh untuk membagikan laporan bug Anda"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Laporan bug berisi data dari berbagai file log sistem, termasuk informasi pribadi dan rahasia. Hanya bagikan laporan bug dengan aplikasi dan orang yang Anda percaya."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Tampilkan pesan ini lain kali"</string>
</resources>
diff --git a/packages/Shell/res/values-it/strings.xml b/packages/Shell/res/values-it/strings.xml
index 18a03fe19b47..9e86affe6aae 100644
--- a/packages/Shell/res/values-it/strings.xml
+++ b/packages/Shell/res/values-it/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Segnalazione di bug acquisita"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Tocca per condividere la segnalazione di bug"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Scorri verso sinistra per condividere il rapporto sui bug"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tocca per condividere la segnalazione di bug"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Le segnalazioni di bug contengono dati da vari file di log del sistema, incluse informazioni personali e private. Condividi le segnalazioni di bug solo con app e persone attendibili."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostra questo messaggio la prossima volta"</string>
</resources>
diff --git a/packages/Shell/res/values-iw/strings.xml b/packages/Shell/res/values-iw/strings.xml
index ded860c14dfc..4e06d03e5d27 100644
--- a/packages/Shell/res/values-iw/strings.xml
+++ b/packages/Shell/res/values-iw/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ŚžŚąŚ˜Ś€ŚȘ"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ړڕڗ Ś”Ś‘ŚŚ’Ś™Ś ŚŠŚ•ŚœŚ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Ś’Śą ڛړڙ ڜکŚȘŚŁ ڐŚȘ ړڕڗ Ś”Ś‘ŚŚ’Ś™Ś کڜښ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Ś”Ś—ŚœŚ§ Ś©ŚžŚŚœŚ” ڛړڙ ڜکŚȘŚŁ ڐŚȘ ړڕڗ Ś”Ś‘ŚŚ’Ś™Ś"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Ś’Śą ڛړڙ ڜکŚȘŚŁ ڐŚȘ ړڕڗ Ś”Ś‘ŚŚ’Ś™Ś کڜښ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ړڕڗڕŚȘ ŚąŚœ Ś‘ŚŚ’Ś™Ś Ś›Ś•ŚœŚœŚ™Ś Ś ŚȘŚ•Ś Ś™Ś ŚžŚ§Ś•Ś‘ŚŠŚ™ Ś”Ś™Ś•ŚžŚŸ Ś”Ś©Ś•Ś Ś™Ś Ś‘ŚžŚąŚšŚ›ŚȘ, Ś›Ś•ŚœŚœ ŚžŚ™Ś“Śą ڐڙکڙ Ś•Ś€ŚšŚ˜Ś™. Ś©ŚȘŚŁ ړڕڗڕŚȘ Ś‘ŚŚ’Ś™Ś ŚšŚ§ ŚąŚ ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ Ś•ŚŚ Ś©Ś™Ś کڐŚȘŚ” ŚĄŚ•ŚžŚš ŚąŚœŚ™Ś”Ś."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ś”ŚŠŚ’ ڐŚȘ Ś”Ś”Ś•Ś“ŚąŚ” ڔږڕ Ś‘Ś€ŚąŚ ڔڑڐڔ"</string>
</resources>
diff --git a/packages/Shell/res/values-ja/strings.xml b/packages/Shell/res/values-ja/strings.xml
index db340419338f..1b24f31c2d98 100644
--- a/packages/Shell/res/values-ja/strings.xml
+++ b/packages/Shell/res/values-ja/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ă‚·ă‚§ăƒ«"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ăƒă‚°ăƒŹăƒăƒŒăƒˆăŒèš˜éŒČă•ă‚ŒăŸă—ăŸ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ăƒă‚°ăƒŹăƒăƒŒăƒˆă‚’ć…±æœ‰ă™ă‚‹ă«ăŻă‚żăƒƒăƒ—ă—ăŸă™"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ăƒă‚°ăƒŹăƒăƒŒăƒˆă‚’ć…±æœ‰ă™ă‚‹ă«ăŻć·Šă«ă‚čăƒŻă‚€ăƒ—"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ăƒă‚°ăƒŹăƒăƒŒăƒˆă‚’ć…±æœ‰ă™ă‚‹ă«ăŻă‚żăƒƒăƒ—ă—ăŸă™"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ăƒă‚°ăƒŹăƒăƒŒăƒˆă«ăŻă€ć€‹äșșăźéžć…Źé–‹æƒ…ć ±ăȘど、シă‚čăƒ†ăƒ ăźă•ăŸă–ăŸăȘăƒ­ă‚°ăƒ•ă‚Ąă‚€ăƒ«ăźăƒ‡ăƒŒă‚żăŒć«ăŸă‚ŒăŸă™ă€‚ć…±æœ‰ă™ă‚‹ć ŽćˆăŻäżĄé Œă™ă‚‹ă‚ąăƒ—ăƒȘăšăƒŠăƒŒă‚¶ăƒŒăźăżă‚’éžæŠžă—ăŠăă ă•ă„ă€‚"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ă“ăźăƒĄăƒƒă‚»ăƒŒă‚žă‚’æŹĄć›žă‚‚èĄšç€șする"</string>
</resources>
diff --git a/packages/Shell/res/values-ka-rGE/strings.xml b/packages/Shell/res/values-ka-rGE/strings.xml
index 7d9c72aa291f..977e9aa66c1e 100644
--- a/packages/Shell/res/values-ka-rGE/strings.xml
+++ b/packages/Shell/res/values-ka-rGE/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"გარეკანი"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ანგარიჹი ჼარვეზების ჹესაჼებ ლეჄმნილია"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ჹეეჼეთ თჄვენი ჼარვეზების ანგარიჹის გასაზიარებლად"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"გაასრიალეთ მარáƒȘჼნივ თჄვენი ჼარვეზის ჹეჱყობინების გასაზიარებლად"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ჹეეჼეთ თჄვენი ჼარვეზების ანგარიჹის გასაზიარებლად"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ჼარვეზის ანგარიჹები მოიáƒȘავს მონაáƒȘემებს სჼვადასჼვა სისჱემური ჟურნალის Ⴠაილებიდან, მათ ჹორის პირად და კონჀიდენáƒȘიალურ ინჀორმაáƒȘიაქ."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ჹემდგომჹი აჩვენე ეს ჹეჱყობინება"</string>
</resources>
diff --git a/packages/Shell/res/values-km-rKH/strings.xml b/packages/Shell/res/values-km-rKH/strings.xml
index efb345c8340d..04e31708140e 100644
--- a/packages/Shell/res/values-km-rKH/strings.xml
+++ b/packages/Shell/res/values-km-rKH/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"សែល"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"បាន​ចាប់​យក​របាយការណ៍​កំហុស"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ប៉ះ​ ážŠážŸáž˜áŸ’áž”ážžâ€‹áž…áŸ‚áž€â€‹ážšáŸ†áž›áŸ‚áž€â€‹ážšáž”áž¶áž™áž€áž¶ážšážŽáŸâ€‹áž€áŸ†áž áž»ážŸâ€‹ážšáž”ážŸáŸ‹â€‹ážąáŸ’áž“áž€"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ážąážŒážŸâ€‹áž‘áŸ…â€‹áž†áŸ’ážœáŸáž„â€‹â€‹ ážŠážŸáž˜áŸ’áž”ážžâ€‹áž…áŸ‚áž€â€‹ážšáŸ†áž›áŸ‚áž€â€‹ážšáž”áž¶áž™áž€áž¶ážšážŽáŸâ€‹áž€áŸ†áž áž»ážŸâ€‹ážšáž”ážŸáŸ‹â€‹ážąáŸ’áž“áž€"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ប៉ះ​ ážŠážŸáž˜áŸ’áž”ážžâ€‹áž…áŸ‚áž€â€‹ážšáŸ†áž›áŸ‚áž€â€‹ážšáž”áž¶áž™áž€áž¶ážšážŽáŸâ€‹áž€áŸ†áž áž»ážŸâ€‹ážšáž”ážŸáŸ‹â€‹ážąáŸ’áž“áž€"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ážšáž”áž¶áž™áž€áž¶ážšážŽáŸâ€‹áž€áŸ†áž áž»ážŸâ€‹ážšážœáž˜áž˜áž¶áž“â€‹ážŻáž€ážŸáž¶ážšâ€‹áž€áŸ†ážŽážáŸ‹â€‹áž áŸážáž»â€‹áž•áŸ’ážŸáŸáž„áŸ—â€‹ážšáž”ážŸáŸ‹â€‹áž”áŸ’ážšáž–áŸáž“áŸ’áž’ រវមមាន​ព័ត៌មាន​ផ្ទាល់ខ្លវន áž“áž·áž„â€‹ážŻáž€áž‡áž“áŸ” ចែករំលែក​របាយការណ៍​កំហុស​ជា​មវយ​កម្មវិធឞ áž“áž·áž„â€‹áž˜áž“áž»ážŸáŸ’ážŸâ€‹ážŠáŸ‚áž›â€‹ážąáŸ’áž“áž€â€‹áž‘áž»áž€â€‹áž…áž·ážáŸ’ážáŸ”"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"បង្ហាញ​សារ​នេះ​ពេល​ក្រោយ"</string>
</resources>
diff --git a/packages/Shell/res/values-ko/strings.xml b/packages/Shell/res/values-ko/strings.xml
index d22a8b09e076..fe5d855f6f8c 100644
--- a/packages/Shell/res/values-ko/strings.xml
+++ b/packages/Shell/res/values-ko/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ì…ž"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ëČ„ê·ž ì‹ êł ì„œ ìșĄìȘ됚"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ëČ„ê·ž ì‹ êł ì„œë„Œ êł”ìœ í•˜ë €ë©Ž 터ìč˜í•˜ì„žìš”."</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"왌ìȘœìœŒëĄœ ìŠ€ì™€ìŽí”„í•˜ì—Ź ëČ„ê·ž ì‹ êł ì„œë„Œ êł”ìœ í•˜ì„žìš”."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ëČ„ê·ž ì‹ êł ì„œë„Œ êł”ìœ í•˜ë €ë©Ž 터ìč˜í•˜ì„žìš”."</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ëČ„ê·ž ì‹ êł ì„œëŠ” 시슀템의 닀양한 ëĄœê·ž 파음 데읎터(예: 개읞 및 ëč„êł”개 ì •ëłŽ)넌 íŹí•ší•©ë‹ˆë‹€. ì‹ ëą°í•  수 있는 ì•±êłŒ ì‚Źìš©ìžì—êȌ만 ëČ„ê·ž ì‹ êł ì„œë„Œ êł”ìœ í•©ë‹ˆë‹€."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"닀음에 읎 메시지 표시"</string>
</resources>
diff --git a/packages/Shell/res/values-lo-rLA/strings.xml b/packages/Shell/res/values-lo-rLA/strings.xml
index a237d482040f..b2724ade1708 100644
--- a/packages/Shell/res/values-lo-rLA/strings.xml
+++ b/packages/Shell/res/values-lo-rLA/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"àș„àșČàșàș‡àșČàș™àșˆàșžàș”àșšàș»àșàșžà»ˆàș­àș‡àș–àș·àșà»€àșàș±àșšàșàșłà»àș„້àș§"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ແàș•àș°à»€àșžàș·à»ˆàș­àșȘàș»à»ˆàș‡àșàșČàș™àș„àșČàșàș‡àșČàș™àș›àș±àș™àș«àșČàș‚àș­àș‡àș—່àșČàș™"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"​àș›àș±àș”​ໄàș›â€‹àșŠà»‰àșČàșâ€‹à»€àșžàș·à»ˆàș­â€‹àșȘàș»à»ˆàș‡â€‹àș„àșČàșâ€‹àș‡àșČàș™â€‹àș‚ໍ້​àșœàșŽàș”​àșžàșČàș”​àș‚àș­àș‡â€‹àș—່àșČàș™"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ແàș•àș°à»€àșžàș·à»ˆàș­àșȘàș»à»ˆàș‡àșàșČàș™àș„àșČàșàș‡àșČàș™àș›àș±àș™àș«àșČàș‚àș­àș‡àș—່àșČàș™"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"àșàșČàș™àș„àșČàșàș‡àșČàș™àș‚ໍ້àșœàșŽàș”àșžàșČàș”àș›àș°àșàș­àșšàșĄàș” àș‚ໍ້àșĄàșčàș™àșˆàșČàșà»„àșŸàș„໌àșšàș±àș™àș—àș¶àșàș‚àș­àș‡àș„àș°àșšàș»àșšàș«àșŒàșČàșà»„àșŸàș„໌, àșźàș§àșĄàș—àș±àș‡àș‚ໍ້àșĄàșčàș™àșȘ່àș§àș™à»‚àș•àș™àșł. àș—່àșČàș™àș•້àș­àș‡à»àșšà»ˆàș‡àș›àș±àș™àș„àșČàșàș‡àșČàș™àș‚ໍ້àșœàșŽàș”àșžàșČàș”ໃàș«à»‰à»àș­àș±àșšàșŻ à»àș„àș°àș„àș»àș™àș—àș”່àș—່àșČàș™à»€àșŠàș·à»ˆàș­àș–àș·à»„àș”້ເàș—àș»à»ˆàșČàș™àș±à»‰àș™."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"àșȘàș°à»àș”àș‡àș‚ໍ້àș„àș§àșČàșĄàș™àș”້àș­àș”àșà»ƒàș™à»€àș—àș·à»ˆàș­àș•ໍ່ໄàș›"</string>
</resources>
diff --git a/packages/Shell/res/values-lt/strings.xml b/packages/Shell/res/values-lt/strings.xml
index 3ac4820a34c3..914ef46a8498 100644
--- a/packages/Shell/res/values-lt/strings.xml
+++ b/packages/Shell/res/values-lt/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Apvalkalas"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"TrikčiĆł ataskaita uĆŸfiksuota"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Palieskite, kad bendrintumėte trikčiƳ ataskaitą"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Perbraukite kairėn, kad bendrintumėte trikties ataskaitą"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Palieskite, kad bendrintumėte trikčiƳ ataskaitą"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"TrikčiĆł ataskaitose pateikiami duomenys iĆĄ ÄŻvairiĆł sistemos ĆŸurnalo failĆł, ÄŻskaitant asmeninę ir privačią informaciją. TrikčiĆł ataskaitas bendrinkite tik su patikimomis programomis ir ĆŸmonėmis."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Rodyti ơį praneơimą kitą kartą"</string>
</resources>
diff --git a/packages/Shell/res/values-lv/strings.xml b/packages/Shell/res/values-lv/strings.xml
index 3f7f7c1e0f77..430cb8d158b5 100644
--- a/packages/Shell/res/values-lv/strings.xml
+++ b/packages/Shell/res/values-lv/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Aizsargs"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Izveidots kÄŒĆ«du pārskats"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Pieskarieties, lai kopÄ«gotu kÄŒĆ«du pārskatu."</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Velciet pa kreisi, lai kopÄ«gotu savu kÄŒĆ«du ziƆojumu."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Pieskarieties, lai kopÄ«gotu kÄŒĆ«du pārskatu."</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"KÄŒĆ«du pārskatā ir iekÄŒauti dati no daĆŸÄdiem sistēmas ĆŸurnālfailiem, tostarp personas dati un privāta informācija. KÄŒĆ«du pārskatus ieteicams kopÄ«got tikai ar uzticamām lietotnēm un lietotājiem."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"RādÄ«t ĆĄo ziƆojumu nākamajā reizē"</string>
</resources>
diff --git a/packages/Shell/res/values-mn-rMN/strings.xml b/packages/Shell/res/values-mn-rMN/strings.xml
index f74298d56739..4637f2d914df 100644
--- a/packages/Shell/res/values-mn-rMN/strings.xml
+++ b/packages/Shell/res/values-mn-rMN/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"КДл"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ĐĐ»ĐŽĐ°Đ°ĐœŃ‹ ĐŒŃĐŽŃŃĐ»ŃĐ» Ń…ÒŻĐ»ŃŃĐœ аĐČаĐČ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"йа Đ°Đ»ĐŽĐ°Đ°ĐœŃ‹ ĐŒŃĐŽŃĐłĐŽĐ»ĐžĐčĐł хуĐČаалцах Đ±ĐŸĐ» Ń…ÒŻŃ€ĐœŃ ÒŻÒŻ"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ӚөрОĐčĐœ ŃĐŸĐłĐŸĐł Ń€Đ”ĐżĐŸŃ€Ń‚Ń‹Đł хуĐČĐ°Đ°Đ»Ń†Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ Đ·ÒŻÒŻĐœ ŃˆŃƒĐŽŃ€Đ°ĐœĐ° уу"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"йа Đ°Đ»ĐŽĐ°Đ°ĐœŃ‹ ĐŒŃĐŽŃĐłĐŽĐ»ĐžĐčĐł хуĐČаалцах Đ±ĐŸĐ» Ń…ÒŻŃ€ĐœŃ ÒŻÒŻ"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ĐĐ»ĐŽĐ°Đ°ĐœŃ‹ Ń€Đ”ĐżĐŸŃ€Ń‚ ĐœŃŒ хуĐČĐžĐčĐœ Đ±ĐŸĐ»ĐŸĐœ ĐœŃƒŃƒŃ† ĐŒŃĐŽŃŃĐ»ŃĐ» Đ·ŃŃ€ĐłĐžĐčĐł Đ°ĐłŃƒŃƒĐ»ŃĐ°Đœ ŃĐžŃŃ‚Đ”ĐŒĐžĐčĐœ төрөл Đ±ÒŻŃ€ĐžĐčĐœ Đ»ĐŸĐł фаĐčĐ»Ń‹Đœ Юатаг Đ°ĐłŃƒŃƒĐ»ĐœĐ°. ĐĐ»ĐŽĐ°Đ°ĐœŃ‹ Ń€Đ”ĐżĐŸŃ€Ń‚Ń‹Đł Đ·Ó©ĐČŃ…Ó©Đœ ĐžŃ‚ĐłŃĐ»Ń‚ŃĐč апп Đ±ĐŸĐ»ĐŸĐœ Ń…ÒŻĐŒÒŻÒŻŃŃ‚ хуĐČĐ°Đ°Đ»Ń†Đ°ĐœĐ° уу."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Đ­ĐœŃ ĐŒĐ”ŃŃĐ”Đ¶ĐžĐčĐł ЮараагоĐčĐœ уЎаа Ń…Đ°Ń€ŃƒŃƒĐ»Đ°Ń…"</string>
</resources>
diff --git a/packages/Shell/res/values-ms-rMY/strings.xml b/packages/Shell/res/values-ms-rMY/strings.xml
index 8d1e4a228c66..d7bdc78e91cd 100644
--- a/packages/Shell/res/values-ms-rMY/strings.xml
+++ b/packages/Shell/res/values-ms-rMY/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Laporan pepijat telah ditangkap"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Sentuh untuk berkongsi laporan pepijat anda"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Leret ke kiri untuk berkongsi laporan pepijat anda"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Sentuh untuk berkongsi laporan pepijat anda"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Laporan pepijat mengandungi data dari pelbagai fail log sistem, termasuk maklumat peribadi dan sulit. Kongsikan laporan pepijat hanya dengan apl dan orang yang anda percayai."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Tunjukkan mesej ini pada masa akan datang"</string>
</resources>
diff --git a/packages/Shell/res/values-nb/strings.xml b/packages/Shell/res/values-nb/strings.xml
index 96d53a633aaf..b9d969d0a5ac 100644
--- a/packages/Shell/res/values-nb/strings.xml
+++ b/packages/Shell/res/values-nb/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Kommandoliste"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Feilrapporten er lagret"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Trykk for Ă„ dele feilrapporten din"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Sveip til venstre for Ă„ dele feilrapporten din"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Trykk for Ă„ dele feilrapporten din"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Feilrapporter inkluderer data fra systemets forskjellige loggfiler. Dette omfatter personlig og privat informasjon. Du bÞr bare dele feilrapporter ned apper og folk du stoler pÄ."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Vis denne meldingen neste gang"</string>
</resources>
diff --git a/packages/Shell/res/values-nl/strings.xml b/packages/Shell/res/values-nl/strings.xml
index 5c32c737f607..51ae329c68d0 100644
--- a/packages/Shell/res/values-nl/strings.xml
+++ b/packages/Shell/res/values-nl/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Foutenrapport vastgelegd"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Raak aan om uw foutenrapport te delen"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Veeg naar links om uw bugmelding te delen"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Raak aan om uw foutenrapport te delen"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Foutenrapporten bevatten gegevens uit de verschillende logbestanden van het systeem, waaronder persoonlijke en privégegevens. Deel foutenrapporten alleen met apps en mensen die u vertrouwt."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Dit bericht de volgende keer weergeven"</string>
</resources>
diff --git a/packages/Shell/res/values-pl/strings.xml b/packages/Shell/res/values-pl/strings.xml
index 2e28f8dfed21..2c810d6e7893 100644
--- a/packages/Shell/res/values-pl/strings.xml
+++ b/packages/Shell/res/values-pl/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"PowƂoka"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Raport o bƂędach zostaƂ zapisany"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Kliknij, by udostępnić raport o bƂędach"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"PrzesuƄ palcem w lewo, by udostępnić swoje zgƂoszenie bƂędu"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Kliknij, by udostępnić raport o bƂędach"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Raporty o bƂędach zawierają dane z rĂłĆŒnych plikĂłw dziennikĂłw systemu, w tym dane osobowe i prywatne. Udostępniaj je tylko aplikacjom i osobom, ktĂłrym ufasz."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"PokaĆŒ ten komunikat następnym razem"</string>
</resources>
diff --git a/packages/Shell/res/values-pt-rPT/strings.xml b/packages/Shell/res/values-pt-rPT/strings.xml
index 1c465e0ba647..7a833d69cfe6 100644
--- a/packages/Shell/res/values-pt-rPT/strings.xml
+++ b/packages/Shell/res/values-pt-rPT/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"RelatĂłrio de erros capturado"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Toque para partilhar o relatĂłrio de erros"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Deslizar rapidamente para a esquerda para partilhar o seu relatĂłrio de erros"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toque para partilhar o relatĂłrio de erros"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Os relatórios de erros incluem dados de vårios ficheiros de registo do sistema, nomeadamente informaçÔes pessoais e privadas. Partilhe relatórios de erros apenas com aplicaçÔes e pessoas fidedignas."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar esta mensagem da prĂłxima vez"</string>
</resources>
diff --git a/packages/Shell/res/values-pt/strings.xml b/packages/Shell/res/values-pt/strings.xml
index 20f4cc9aadfb..3d4c51f2fb9d 100644
--- a/packages/Shell/res/values-pt/strings.xml
+++ b/packages/Shell/res/values-pt/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"RelatĂłrio de bugs capturado"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Toque para compartilhar seu relatĂłrio de bugs"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Deslize para a esquerda para compartilhar seu relatĂłrio de bugs"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toque para compartilhar seu relatĂłrio de bugs"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Os relatĂłrios de bugs contĂȘm dados de diversos arquivos de registro do sistema, inclusive informaçÔes pessoais e particulares. Compartilhe relatĂłrios de bugs somente com aplicativos e pessoas nos quais vocĂȘ confia."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar esta mensagem da prĂłxima vez"</string>
</resources>
diff --git a/packages/Shell/res/values-ro/strings.xml b/packages/Shell/res/values-ro/strings.xml
index 45c2b0a59acb..537ba3d79cae 100644
--- a/packages/Shell/res/values-ro/strings.xml
+++ b/packages/Shell/res/values-ro/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Raportul despre erori a fost creat"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Atingeți pentru a permite accesul la raportul despre erori"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Glisați la stĂąnga pentru a trimite raportul de erori"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Atingeți pentru a permite accesul la raportul despre erori"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Rapoartele despre erori conțin date din diferite fișiere de jurnal ale sistemului, inclusiv informații private și personale. Permiteți accesul la rapoartele despre erori numai aplicațiilor și persoanelor Ăźn care aveți Ăźncredere."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Afișați acest mesaj data viitoare"</string>
</resources>
diff --git a/packages/Shell/res/values-ru/strings.xml b/packages/Shell/res/values-ru/strings.xml
index 153e972df6bb..7c8073665059 100644
--- a/packages/Shell/res/values-ru/strings.xml
+++ b/packages/Shell/res/values-ru/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ĐžĐ±ĐŸĐ»ĐŸŃ‡Đșа"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ОтчДт ĐŸĐ± ĐŸŃˆĐžĐ±Đșах ŃĐŸŃ…Ń€Đ°ĐœĐ”Đœ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ĐĐ°Đ¶ĐŒĐžŃ‚Đ”, Ń‡Ń‚ĐŸĐ±Ń‹ ĐŸŃ‚ĐżŃ€Đ°ĐČоть ĐŸŃ‚Ń‡Đ”Ń‚ ĐŸĐ± ĐŸŃˆĐžĐ±Đșах"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŸŃ€ĐŸĐČДЎОтД ĐżĐ°Đ»ŃŒŃ†Đ”ĐŒ ĐČлДĐČĐŸ, Ń‡Ń‚ĐŸĐ±Ń‹ ĐŸŃ‚ĐżŃ€Đ°ĐČоть ĐŸŃ‚Ń‡Đ”Ń‚ ĐŸĐ± ĐŸŃˆĐžĐ±ĐșĐ”"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ĐĐ°Đ¶ĐŒĐžŃ‚Đ”, Ń‡Ń‚ĐŸĐ±Ń‹ ĐŸŃ‚ĐżŃ€Đ°ĐČоть ĐŸŃ‚Ń‡Đ”Ń‚ ĐŸĐ± ĐŸŃˆĐžĐ±Đșах"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ОтчДты ĐŸĐ± ĐŸŃˆĐžĐ±Đșах ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‚ ĐŽĐ°ĐœĐœŃ‹Đ” Ń€Đ°Đ·Đ»ĐžŃ‡ĐœŃ‹Ń… ŃĐžŃŃ‚Đ”ĐŒĐœŃ‹Ń… Đ¶ŃƒŃ€ĐœĐ°Đ»ĐŸĐČ Đž ĐŒĐŸĐłŃƒŃ‚ ĐČĐșĐ»ŃŽŃ‡Đ°Ń‚ŃŒ Đ»ĐžŃ‡ĐœŃƒŃŽ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŽ. Đ Đ”ĐșĐŸĐŒĐ”ĐœĐŽŃƒĐ”ĐŒ ĐŸŃ‚ĐșрыĐČать Đș ĐœĐžĐŒ ĐŽĐŸŃŃ‚ŃƒĐż Ń‚ĐŸĐ»ŃŒĐșĐŸ Đ»ĐžŃ†Đ°ĐŒ Đž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃĐŒ, заслужОĐČĐ°ŃŽŃ‰ĐžĐŒ ĐŽĐŸĐČДрОД."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ŃŃ‚ĐŸ ŃĐŸĐŸĐ±Ń‰Đ”ĐœĐžĐ” ĐČ ŃĐ»Đ”ĐŽŃƒŃŽŃ‰ĐžĐč раз"</string>
</resources>
diff --git a/packages/Shell/res/values-sk/strings.xml b/packages/Shell/res/values-sk/strings.xml
index 59c3ccf75558..0d6940d606ca 100644
--- a/packages/Shell/res/values-sk/strings.xml
+++ b/packages/Shell/res/values-sk/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Prostredie"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Hlåsenie o chybåch bolo vytvorené"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"HlĂĄsenie o chybĂĄch mĂŽĆŸete zdielaĆ„ klepnutĂ­m"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Ak chcete hlĂĄsenie o chybe zdieÄŸaĆ„, prejdite prstom doÄŸava."</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"HlĂĄsenie o chybĂĄch mĂŽĆŸete zdielaĆ„ klepnutĂ­m"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"SprĂĄvy o chybĂĄch obsahujĂș Ășdaje z rĂŽznych sĂșborov dennĂ­kov systĂ©mu vrĂĄtane osobnĂœch a sĂșkromnĂœch informĂĄciĂ­. ZdieÄŸajte ich iba s dĂŽveryhodnĂœmi aplikĂĄciami a ÄŸuďmi."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ZobraziĆ„ tĂșto sprĂĄvu nabudĂșce"</string>
</resources>
diff --git a/packages/Shell/res/values-sl/strings.xml b/packages/Shell/res/values-sl/strings.xml
index 8522d1b3ea65..b2caa07c27e0 100644
--- a/packages/Shell/res/values-sl/strings.xml
+++ b/packages/Shell/res/values-sl/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Lupina"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Poročilo o napaki je posneto"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Dotaknite se, če ĆŸelite deliti sporočilo o napaki z drugimi"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Povlecite v levo, če ĆŸelite poslati sporočilo o napaki"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Dotaknite se, če ĆŸelite deliti sporočilo o napaki z drugimi"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Poročila o napakah vsebujejo podatke iz različnih dnevniơkih datotek sistema, vključno z osebnimi in zasebnimi podatki. Poročila o napakah delite samo z aplikacijami in ljudmi, ki jim zaupate."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"PokaĆŸi to sporočilo naslednjič"</string>
</resources>
diff --git a/packages/Shell/res/values-sr/strings.xml b/packages/Shell/res/values-sr/strings.xml
index bef6ff4bc9f4..9e4e595ef1ed 100644
--- a/packages/Shell/res/values-sr/strings.xml
+++ b/packages/Shell/res/values-sr/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ИзĐČĐ”ŃˆŃ‚Đ°Ń˜ ĐŸ ĐłŃ€Đ”ŃˆŃ†Đž јД ŃĐœĐžĐŒŃ™Đ”Đœ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Đ”ĐŸĐŽĐžŃ€ĐœĐžŃ‚Đ” Ўа бОстД ЎДлОлО ОзĐČĐ”ŃˆŃ‚Đ°Ń˜ ĐŸ ĐłŃ€Đ”ŃˆŃ†Đž"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŸŃ€Đ”ĐČŃƒŃ†ĐžŃ‚Đ” улДĐČĐŸ Ўа бОстД ЎДлОлО ОзĐČĐ”ŃˆŃ‚Đ°Ń˜ ĐŸ ĐłŃ€Đ”ŃˆĐșĐ°ĐŒĐ°"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Đ”ĐŸĐŽĐžŃ€ĐœĐžŃ‚Đ” Ўа бОстД ЎДлОлО ОзĐČĐ”ŃˆŃ‚Đ°Ń˜ ĐŸ ĐłŃ€Đ”ŃˆŃ†Đž"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ИзĐČĐ”ŃˆŃ‚Đ°Ń˜Đž ĐŸ ĐłŃ€Đ”ŃˆĐșĐ°ĐŒĐ° саЎржД ĐżĐŸĐŽĐ°Ń‚ĐșĐ” Оз разлОчОтОх ŃĐžŃŃ‚Đ”ĐŒŃĐșох ĐŽĐ°Ń‚ĐŸŃ‚Đ”Đșа Đ”ĐČĐžĐŽĐ”ĐœŃ†ĐžŃ˜Đ”, уĐșључујућо Đ»ĐžŃ‡ĐœĐ” Đž проĐČĐ°Ń‚ĐœĐ” ĐżĐŸĐŽĐ°Ń‚ĐșĐ”. ДДлОтД ОзĐČĐ”ŃˆŃ‚Đ°Ń˜Đ” ĐŸ ĐłŃ€Đ”ŃˆĐșĐ°ĐŒĐ° ŃĐ°ĐŒĐŸ са аплОĐșĐ°Ń†ĐžŃ˜Đ°ĐŒĐ° Đž Ń™ŃƒĐŽĐžĐŒĐ° у ĐșĐŸŃ˜Đ” ĐžĐŒĐ°Ń‚Đ” ĐżĐŸĐČДрДња."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ПроĐșажО ĐŸĐČу ĐżĐŸŃ€ŃƒĐșу слДЎДћО пут"</string>
</resources>
diff --git a/packages/Shell/res/values-sv/strings.xml b/packages/Shell/res/values-sv/strings.xml
index 055dc41738f2..c26a7cecf329 100644
--- a/packages/Shell/res/values-sv/strings.xml
+++ b/packages/Shell/res/values-sv/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Skal"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Felrapporten har skapats"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Tryck om du vill dela felrapporten"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Dra till vÀnster om du vill dela felrapporten"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tryck om du vill dela felrapporten"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Felrapporter innehÄller data frÄn systemets olika loggfiler, inklusive personliga och privata uppgifter. Dela bara felrapporter med personer du litar pÄ."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Visa det hÀr meddelandet nÀsta gÄng"</string>
</resources>
diff --git a/packages/Shell/res/values-sw/strings.xml b/packages/Shell/res/values-sw/strings.xml
index b1d440774c9c..4553328cdc30 100644
--- a/packages/Shell/res/values-sw/strings.xml
+++ b/packages/Shell/res/values-sw/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Ganda"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Ripoti ya hitilafu imenaswa"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Gusa ili ushiriki ripoti yako ya hitilafu"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Telezesha kidole kushoto ili ushiriki ripoti yako ya hitilafu"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Gusa ili ushiriki ripoti yako ya hitilafu"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Ripoti ya hitilafu ina data kutoka kwenye faili za kumbukumbu mbalimbali za mfumo, pamoja na maelezo ya kibinafsi na faragha. Shiriki ripoti ya hitilafu na programu na watu unaowaamini pekee."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Onyesha ujumbe huu wakati mwingine"</string>
</resources>
diff --git a/packages/Shell/res/values-th/strings.xml b/packages/Shell/res/values-th/strings.xml
index b484a426d012..07029520dd11 100644
--- a/packages/Shell/res/values-th/strings.xml
+++ b/packages/Shell/res/values-th/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"àžˆàž±àžšàž àžČàžžàžŁàžČàžąàž‡àžČàž™àž‚àč‰àž­àžšàžàžžàžŁàčˆàž­àž‡àčàž„àč‰àž§"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"àčàž•àž°àč€àžžàž·àčˆàž­àčàžŠàžŁàčŒàžŁàžČàžąàž‡àžČàž™àž‚àč‰àž­àžšàžàžžàžŁàčˆàž­àž‡àž‚àž­àž‡àž„àžžàž“"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"àžàž§àžČàž”àč„àž›àž—àžČàž‡àž‹àč‰àžČàžąàč€àžžàž·àčˆàž­àčàžŠàžŁàčŒàžŁàžČàžąàž‡àžČàž™àž‚àč‰àž­àžšàžàžžàžŁàčˆàž­àž‡"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"àčàž•àž°àč€àžžàž·àčˆàž­àčàžŠàžŁàčŒàžŁàžČàžąàž‡àžČàž™àž‚àč‰àž­àžšàžàžžàžŁàčˆàž­àž‡àž‚àž­àž‡àž„àžžàž“"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"àžŁàžČàžąàž‡àžČàž™àž‚àč‰àž­àžšàžàžžàžŁàčˆàž­àž‡àžĄàž”àž‚àč‰àž­àžĄàžčàž„àžˆàžČàžàč„àžŸàž„àčŒàžšàž±àž™àž—àž¶àžàž•àčˆàžČàž‡àč† àž‚àž­àž‡àžŁàž°àžšàžš àžŁàž§àžĄàž–àž¶àž‡àž‚àč‰àž­àžĄàžčàž„àžȘàčˆàž§àž™àž•àž±àž§ àčàžŠàžŁàčŒàžŁàžČàžąàž‡àžČàž™àž‚àč‰àž­àžšàžàžžàžŁàčˆàž­àž‡àžàž±àžšàčàž­àž›àčàž„àž°àžšàžžàž„àž„àž„àž—àž”àčˆàž„àžžàž“àč„àž§àč‰àčƒàžˆàč€àž—àčˆàžČàž™àž±àč‰àž™"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"àčàžȘàž”àž‡àž‚àč‰àž­àž„àž§àžČàžĄàž™àž”àč‰àčƒàž™àž„àžŁàž±àč‰àž‡àž•àčˆàž­àč„àž›"</string>
</resources>
diff --git a/packages/Shell/res/values-tl/strings.xml b/packages/Shell/res/values-tl/strings.xml
index 20d1b09c32ad..8d42ecd951f2 100644
--- a/packages/Shell/res/values-tl/strings.xml
+++ b/packages/Shell/res/values-tl/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Na-capture ang ulat ng bug"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Pindutin upang ibahagi ang iyong ulat ng bug"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Mag-swipe pakaliwa upang ibahagi ang iyong ulat ng bug"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Pindutin upang ibahagi ang iyong ulat ng bug"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Naglalaman ang mga ulat ng bug ng data mula sa iba\'t ibang file ng log ng system, kabilang ang personal at pribadong impormasyon. Magbahagi lang ng mga ulat ng bug sa apps at mga tao na pinagkakatiwalaan mo."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ipakita ang mensaheng ito sa susunod"</string>
</resources>
diff --git a/packages/Shell/res/values-tr/strings.xml b/packages/Shell/res/values-tr/strings.xml
index 56db3fc80742..2e95b4edee73 100644
--- a/packages/Shell/res/values-tr/strings.xml
+++ b/packages/Shell/res/values-tr/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Kabuk"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Hata raporu kaydedildi"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Hata raporunuzu paylaƟmak için dokunun"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Hata raporunuzu paylaßmak için hızlıca sola kaydırın"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Hata raporunuzu paylaƟmak için dokunun"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Hata raporları, kißisel ve özel bilgiler dahil olmak ĂŒzere sistemin çeßitli gĂŒnlĂŒk dosyalarından veriler içerir. Hata raporlarını sadece gĂŒvendiğiniz uygulamalar ve kißilerle paylaßın."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Bir dahaki sefere bu mesajı göster"</string>
</resources>
diff --git a/packages/Shell/res/values-uk/strings.xml b/packages/Shell/res/values-uk/strings.xml
index 68e68a8f4d76..f9f5bb340b54 100644
--- a/packages/Shell/res/values-uk/strings.xml
+++ b/packages/Shell/res/values-uk/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ĐžĐ±ĐŸĐ»ĐŸĐœĐșа"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ЗĐČіт ĐżŃ€ĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž стĐČĐŸŃ€Đ”ĐœĐŸ"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"ĐąĐŸŃ€ĐșĐœŃ–Ń‚ŃŒŃŃ, Ń‰ĐŸĐ± ĐœĐ°ĐŽŃ–ŃĐ»Đ°Ń‚Đž Đ·ĐČіт ĐżŃ€ĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŸŃ€ĐŸĐČĐ”ĐŽŃ–Ń‚ŃŒ ĐżĐ°Đ»ŃŒŃ†Đ”ĐŒ ліĐČĐŸŃ€ŃƒŃ‡, Ń‰ĐŸĐ± ĐœĐ°ĐŽŃ–ŃĐ»Đ°Ń‚Đž Đ·ĐČіт ĐżŃ€ĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ĐąĐŸŃ€ĐșĐœŃ–Ń‚ŃŒŃŃ, Ń‰ĐŸĐ± ĐœĐ°ĐŽŃ–ŃĐ»Đ°Ń‚Đž Đ·ĐČіт ĐżŃ€ĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"ЗĐČіто ĐżŃ€ĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž ĐŒŃ–ŃŃ‚ŃŃ‚ŃŒ ĐŽĐ°ĐœŃ– Đ· Ń€Ń–Đ·ĐœĐžŃ… фаĐčліĐČ Đ¶ŃƒŃ€ĐœĐ°Đ»Ńƒ ŃĐžŃŃ‚Đ”ĐŒĐž, Đ·ĐŸĐșŃ€Đ”ĐŒĐ° ĐŸŃĐŸĐ±ĐžŃŃ‚Ń– та ĐșĐŸĐœŃ„Ń–ĐŽĐ”ĐœŃ†Ń–ĐčĐœŃ–. ĐĐ°ĐŽŃĐžĐ»Đ°ĐčтД Đ·ĐČіт ĐżŃ€ĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž лОшД Ń‚ĐžĐŒ, ĐșĐŸĐŒŃƒ ĐŽĐŸĐČŃ–Ń€ŃŃ”Ń‚Đ”."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐŸĐŸĐșазатО цД ĐżĐŸĐČŃ–ĐŽĐŸĐŒĐ»Đ”ĐœĐœŃ ĐœĐ°ŃŃ‚ŃƒĐżĐœĐŸĐłĐŸ Ń€Đ°Đ·Ńƒ"</string>
</resources>
diff --git a/packages/Shell/res/values-vi/strings.xml b/packages/Shell/res/values-vi/strings.xml
index ca4fcaa0c98b..49194112610e 100644
--- a/packages/Shell/res/values-vi/strings.xml
+++ b/packages/Shell/res/values-vi/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"BĂĄo cĂĄo lỗi đã Ä‘Æ°á»Łc chỄp"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"CháșĄm để chia sáș» bĂĄo cĂĄo lỗi cá»§a báșĄn"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Vuốt sang trĂĄi để chia sáș» bĂĄo cĂĄo lỗi cá»§a báșĄn"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"CháșĄm để chia sáș» bĂĄo cĂĄo lỗi cá»§a báșĄn"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"CĂĄc bĂĄo cĂĄo lỗi chứa dữ liệu từ nhiều tệp nháș­t kĂœ khĂĄc nhau cá»§a hệ thống, bao gồm cáșŁ thĂŽng tin cĂĄ nhĂąn vĂ  riĂȘng tư. Chỉ chia sáș» bĂĄo cĂĄo lỗi với cĂĄc ứng dỄng vĂ  những người mĂ  báșĄn tin tưởng."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Hiển thị thĂŽng bĂĄo nĂ y vĂ o láș§n tới"</string>
</resources>
diff --git a/packages/Shell/res/values-zh-rCN/strings.xml b/packages/Shell/res/values-zh-rCN/strings.xml
index f1c385f3a905..409b5caffc9f 100644
--- a/packages/Shell/res/values-zh-rCN/strings.xml
+++ b/packages/Shell/res/values-zh-rCN/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ć·ČæŠ“ć–é”™èŻŻæŠ„ć‘Š"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"è§Šæ‘žćłćŻćˆ†äș«æ‚šçš„é”™èŻŻæŠ„ć‘Š"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ć‘ć·Šæ»‘ćŠšćłćŻćˆ†äș«é”™èŻŻæŠ„ć‘Š"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"è§Šæ‘žćłćŻćˆ†äș«æ‚šçš„é”™èŻŻæŠ„ć‘Š"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"é”™èŻŻæŠ„ć‘ŠćŒ…ć«çš„æ•°æźæ„è‡ȘäșŽçł»ç»Ÿçš„搄äžȘæ—„ćż—æ–‡ä»¶ïŒŒć…¶äž­ćŒ…ć«äžȘäșșäżĄæŻć’Œéšç§äżĄæŻă€‚èŻ·ćŠĄćż…ćȘäžŽæ‚šäżĄä»»çš„ćș”ç”šć’Œç”šæˆ·ćˆ†äș«é”™èŻŻæŠ„ć‘Šă€‚"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"äž‹æŹĄć†æ˜Ÿç€șèż™æĄèźŻæŻ"</string>
</resources>
diff --git a/packages/Shell/res/values-zh-rHK/strings.xml b/packages/Shell/res/values-zh-rHK/strings.xml
index b5f19352ace7..0d56d76d1446 100644
--- a/packages/Shell/res/values-zh-rHK/strings.xml
+++ b/packages/Shell/res/values-zh-rHK/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"ć‘œä»€ä»‹éą"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ć·Čæ“·ć–éŒŻèȘ€ć ±ć‘Š"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"èŒ•è§žćłćŻćˆ†äș«æ‚šçš„éŒŻèȘ€ć ±ć‘Š"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ć‘ć·Šæ»‘ć‹•ćłćŻćˆ†äș«éŒŻèȘ€ć ±ć‘Š"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"èŒ•è§žćłćŻćˆ†äș«æ‚šçš„éŒŻèȘ€ć ±ć‘Š"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"錯èȘ€ć ±ć‘Šäž­æœ‰äŸ†è‡Șçł»ç”±ć„ć€‹èš˜éŒ„æȘ”æĄˆçš„èł‡æ–™ïŒŒćŒ…æ‹Źć€‹äșș撌私äșșèł‡æ–™ă€‚è«‹ćȘèˆ‡æ‚šäżĄä»»çš„æ‡‰ç”šçš‹ćŒć’Œç”šæˆ¶ćˆ†äș«éŒŻèȘ€ć ±ć‘Šă€‚"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"äž‹æŹĄć†éĄŻç€șé€™ć‰‡èšŠæŻ"</string>
</resources>
diff --git a/packages/Shell/res/values-zh-rTW/strings.xml b/packages/Shell/res/values-zh-rTW/strings.xml
index d3d31403ab2d..fe3bcff1cddb 100644
--- a/packages/Shell/res/values-zh-rTW/strings.xml
+++ b/packages/Shell/res/values-zh-rTW/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"æźŒć±€"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"ć·Čæ“·ć–éŒŻèȘ€ć ±ć‘Š"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"èŒ•è§žćłćŻćˆ†äș«æ‚šçš„éŒŻèȘ€ć ±ć‘Š"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ć‘ć·Šæ»‘ć‹•ćłćŻćˆ†äș«éŒŻèȘ€ć ±ć‘Š"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"èŒ•è§žćłćŻćˆ†äș«æ‚šçš„éŒŻèȘ€ć ±ć‘Š"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"錯èȘ€ć ±ć‘Šçš„èł‡æ–™äŸ†è‡Șçł»ç”±ć„ć€‹çŽ€éŒ„æȘ”ïŒŒćŒ…æ‹Źć€‹äșșć’Œç§ćŻ†èł‡èšŠă€‚è«‹ć‹™ćż…ćȘèˆ‡æ‚šäżĄä»»çš„æ‡‰ç”šçš‹ćŒć’Œäœżç”šè€…ćˆ†äș«éŒŻèȘ€ć ±ć‘Šă€‚"</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"äž‹æŹĄä»éĄŻç€șé€™ć‰‡èšŠæŻ"</string>
</resources>
diff --git a/packages/Shell/res/values-zu/strings.xml b/packages/Shell/res/values-zu/strings.xml
index e524b80f18e1..38e95952a101 100644
--- a/packages/Shell/res/values-zu/strings.xml
+++ b/packages/Shell/res/values-zu/strings.xml
@@ -18,7 +18,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"I-Shell"</string>
<string name="bugreport_finished_title" msgid="2293711546892863898">"Umbiko wesiphazamisi uthwetshuliwe"</string>
- <string name="bugreport_finished_text" msgid="3559904746859400732">"Thinta ukuze wabelane ngombiko wakho wesiphazamisi"</string>
+ <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swayiphela kwesokunxele ukuze wabelane umbiko wesiphazamiso sakho"</string>
+ <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Thinta ukuze wabelane ngombiko wakho wesiphazamisi"</string>
<string name="bugreport_confirm" msgid="5130698467795669780">"Imibiko yeziphazamisi iqukethe idatha yamafayela wokungena ahlukile wesistimu, afaka ulwazi lomuntu siqu noma lobumfihlo. Yabelana kuphela ngemibiko yeziphazamisi nezinhlelo zokusebenza nabantu obathembayo."</string>
<string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Bonisa lo mlayezo ngesikhathi esilandelayo"</string>
</resources>
diff --git a/packages/Shell/res/values/strings.xml b/packages/Shell/res/values/strings.xml
index e5606c78ec06..51e2c951a2a5 100644
--- a/packages/Shell/res/values/strings.xml
+++ b/packages/Shell/res/values/strings.xml
@@ -19,8 +19,12 @@
<!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
<string name="bugreport_finished_title">Bug report captured</string>
+
+ <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
+ <string name="bugreport_finished_text" product="watch">Swipe left to share your bug report</string>
<!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] -->
- <string name="bugreport_finished_text">Touch to share your bug report</string>
+ <string name="bugreport_finished_text" product="default">Touch to share your bug report</string>
+
<!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] -->
<string name="bugreport_confirm">Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people you trust.</string>
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index 610f6cfc126e..fe3021b009c0 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -69,6 +69,7 @@ import android.util.SparseArray;
import android.util.TypedValue;
import android.view.ActionMode;
import android.view.ContextThemeWrapper;
+import android.view.Display;
import android.view.Gravity;
import android.view.IRotationWatcher;
import android.view.IWindowManager;
@@ -88,6 +89,7 @@ import android.view.ViewParent;
import android.view.ViewRootImpl;
import android.view.ViewStub;
import android.view.Window;
+import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
@@ -2094,6 +2096,22 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
}
@Override
+ public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
+ if (mOutsetBottom != null) {
+ final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
+ int bottom = (int) mOutsetBottom.getDimension(metrics);
+ WindowInsets newInsets = insets.replaceSystemWindowInsets(
+ insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(),
+ insets.getSystemWindowInsetRight(),
+ insets.getSystemWindowInsetBottom() + bottom);
+ return super.dispatchApplyWindowInsets(newInsets);
+ } else {
+ return super.dispatchApplyWindowInsets(insets);
+ }
+ }
+
+
+ @Override
public boolean onTouchEvent(MotionEvent event) {
return onInterceptTouchEvent(event);
}
@@ -2924,9 +2942,17 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
a.getValue(com.android.internal.R.styleable.Window_windowFixedHeightMinor,
mFixedHeightMinor);
}
- if (a.hasValue(com.android.internal.R.styleable.Window_windowOutsetBottom)) {
- if (mOutsetBottom == null) mOutsetBottom = new TypedValue();
- a.getValue(com.android.internal.R.styleable.Window_windowOutsetBottom, mOutsetBottom);
+
+ final WindowManager windowService = (WindowManager) getContext().getSystemService(
+ Context.WINDOW_SERVICE);
+ if (windowService != null) {
+ final Display display = windowService.getDefaultDisplay();
+ if (display.getDisplayId() == Display.DEFAULT_DISPLAY &&
+ a.hasValue(com.android.internal.R.styleable.Window_windowOutsetBottom)) {
+ if (mOutsetBottom == null) mOutsetBottom = new TypedValue();
+ a.getValue(com.android.internal.R.styleable.Window_windowOutsetBottom,
+ mOutsetBottom);
+ }
}
final Context context = getContext();
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 8e085839795b..aa14da136b31 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -5038,8 +5038,18 @@ public class ConnectivityService extends IConnectivityManager.Stub {
setAlarm(samplingIntervalInSeconds * 1000, mSampleIntervalElapsedIntent);
}
+ /**
+ * Sets a network sampling alarm.
+ */
void setAlarm(int timeoutInMilliseconds, PendingIntent intent) {
long wakeupTime = SystemClock.elapsedRealtime() + timeoutInMilliseconds;
- mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, wakeupTime, intent);
+ int alarmType;
+ if (Resources.getSystem().getBoolean(
+ R.bool.config_networkSamplingWakesDevice)) {
+ alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
+ } else {
+ alarmType = AlarmManager.ELAPSED_REALTIME;
+ }
+ mAlarmManager.set(alarmType, wakeupTime, intent);
}
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index d09ee967fa1e..a6deed54eab3 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -340,28 +340,6 @@ public final class ActivityManagerService extends ActivityManagerNative
// devices.
private boolean mShowDialogs = true;
- /**
- * Description of a request to start a new activity, which has been held
- * due to app switches being disabled.
- */
- static class PendingActivityLaunch {
- final ActivityRecord r;
- final ActivityRecord sourceRecord;
- final int startFlags;
- final ActivityStack stack;
-
- PendingActivityLaunch(ActivityRecord _r, ActivityRecord _sourceRecord,
- int _startFlags, ActivityStack _stack) {
- r = _r;
- sourceRecord = _sourceRecord;
- startFlags = _startFlags;
- stack = _stack;
- }
- }
-
- final ArrayList<PendingActivityLaunch> mPendingActivityLaunches
- = new ArrayList<PendingActivityLaunch>();
-
BroadcastQueue mFgBroadcastQueue;
BroadcastQueue mBgBroadcastQueue;
// Convenient for easy iteration over the queues. Foreground is first
@@ -1074,6 +1052,9 @@ public final class ActivityManagerService extends ActivityManagerNative
*/
private boolean mUserIsMonkey;
+ /** Flag whether the device has a recents UI */
+ final boolean mHasRecents;
+
final ServiceThread mHandlerThread;
final MainHandler mHandler;
@@ -1320,7 +1301,7 @@ public final class ActivityManagerService extends ActivityManagerNative
} break;
case DO_PENDING_ACTIVITY_LAUNCHES_MSG: {
synchronized (ActivityManagerService.this) {
- doPendingActivityLaunchesLocked(true);
+ mStackSupervisor.doPendingActivityLaunchesLocked(true);
}
} break;
case KILL_APPLICATION_MSG: {
@@ -1941,6 +1922,9 @@ public final class ActivityManagerService extends ActivityManagerNative
mConfigurationSeq = mConfiguration.seq = 1;
mProcessCpuTracker.init();
+ mHasRecents = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_hasRecents);
+
mCompatModePackages = new CompatModePackages(this, systemDir, mHandler);
mIntentFirewall = new IntentFirewall(new IntentFirewallInterface(), mHandler);
mStackSupervisor = new ActivityStackSupervisor(this);
@@ -3028,19 +3012,6 @@ public final class ActivityManagerService extends ActivityManagerNative
mProcessObservers.finishBroadcast();
}
- final void doPendingActivityLaunchesLocked(boolean doResume) {
- final int N = mPendingActivityLaunches.size();
- if (N <= 0) {
- return;
- }
- for (int i=0; i<N; i++) {
- PendingActivityLaunch pal = mPendingActivityLaunches.get(i);
- mStackSupervisor.startActivityUncheckedLocked(pal.r, pal.sourceRecord, pal.startFlags,
- doResume && i == (N-1), null);
- }
- mPendingActivityLaunches.clear();
- }
-
@Override
public final int startActivity(IApplicationThread caller, String callingPackage,
Intent intent, String resolvedType, IBinder resultTo,
@@ -8274,6 +8245,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
+ @Override
public void stopAppSwitches() {
if (checkCallingPermission(android.Manifest.permission.STOP_APP_SWITCHES)
!= PackageManager.PERMISSION_GRANTED) {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index d894e4eb2f10..224946ce89c0 100755
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -754,7 +754,7 @@ final class ActivityStack {
prev.task.touchActiveTime();
clearLaunchTime(prev);
final ActivityRecord next = mStackSupervisor.topRunningActivityLocked();
- if (next == null || next.task != prev.task) {
+ if (mService.mHasRecents && (next == null || next.task != prev.task)) {
prev.updateThumbnail(screenshotActivities(prev), null);
}
stopFullyDrawnTraceIfNeeded();
@@ -2558,18 +2558,23 @@ final class ActivityStack {
return r;
}
- void finishAllActivitiesLocked() {
+ void finishAllActivitiesLocked(boolean immediately) {
+ boolean noActivitiesInStack = true;
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities;
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
- if (r.finishing) {
+ noActivitiesInStack = false;
+ if (r.finishing && !immediately) {
continue;
}
- Slog.d(TAG, "finishAllActivitiesLocked: finishing " + r);
+ Slog.d(TAG, "finishAllActivitiesLocked: finishing " + r + " immediately");
finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false);
}
}
+ if (noActivitiesInStack) {
+ mActivityContainer.onTaskListEmptyLocked();
+ }
}
final boolean navigateUpToLocked(IBinder token, Intent destIntent, int resultCode,
@@ -2683,6 +2688,7 @@ final class ActivityStack {
// down to the max limit while they are still waiting to finish.
mStackSupervisor.mFinishingActivities.remove(r);
mStackSupervisor.mWaitingVisibleActivities.remove(r);
+ mStackSupervisor.removePendingActivityLaunchesLocked(r);
// Remove any pending results.
if (r.finishing && r.pendingResults != null) {
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index bca215dde51a..611b28fe3974 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -88,7 +88,6 @@ import android.view.Surface;
import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.os.TransferPipe;
import com.android.server.LocalServices;
-import com.android.server.am.ActivityManagerService.PendingActivityLaunch;
import com.android.server.am.ActivityStack.ActivityState;
import com.android.server.wm.WindowManagerService;
@@ -234,6 +233,28 @@ public final class ActivityStackSupervisor implements DisplayListener {
InputManagerInternal mInputManagerInternal;
+ final ArrayList<PendingActivityLaunch> mPendingActivityLaunches
+ = new ArrayList<PendingActivityLaunch>();
+
+ /**
+ * Description of a request to start a new activity, which has been held
+ * due to app switches being disabled.
+ */
+ static class PendingActivityLaunch {
+ final ActivityRecord r;
+ final ActivityRecord sourceRecord;
+ final int startFlags;
+ final ActivityStack stack;
+
+ PendingActivityLaunch(ActivityRecord _r, ActivityRecord _sourceRecord,
+ int _startFlags, ActivityStack _stack) {
+ r = _r;
+ sourceRecord = _sourceRecord;
+ startFlags = _startFlags;
+ stack = _stack;
+ }
+ }
+
public ActivityStackSupervisor(ActivityManagerService service) {
mService = service;
PowerManager pm = (PowerManager)mService.mContext.getSystemService(Context.POWER_SERVICE);
@@ -1304,7 +1325,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
if (!mService.checkAppSwitchAllowedLocked(callingPid, callingUid, "Activity start")) {
PendingActivityLaunch pal =
new PendingActivityLaunch(r, sourceRecord, startFlags, stack);
- mService.mPendingActivityLaunches.add(pal);
+ mPendingActivityLaunches.add(pal);
setDismissKeyguard(false);
ActivityOptions.abort(options);
return ActivityManager.START_SWITCHES_CANCELED;
@@ -1322,7 +1343,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
mService.mDidAppSwitch = true;
}
- mService.doPendingActivityLaunchesLocked(false);
+ doPendingActivityLaunchesLocked(false);
err = startActivityUncheckedLocked(r, sourceRecord, startFlags, true, options);
@@ -1830,6 +1851,23 @@ public final class ActivityStackSupervisor implements DisplayListener {
return ActivityManager.START_SUCCESS;
}
+ final void doPendingActivityLaunchesLocked(boolean doResume) {
+ while (!mPendingActivityLaunches.isEmpty()) {
+ PendingActivityLaunch pal = mPendingActivityLaunches.remove(0);
+ startActivityUncheckedLocked(pal.r, pal.sourceRecord, pal.startFlags,
+ doResume && mPendingActivityLaunches.isEmpty(), null);
+ }
+ }
+
+ void removePendingActivityLaunchesLocked(ActivityRecord r) {
+ for (int palNdx = mPendingActivityLaunches.size() - 1; palNdx >= 0; --palNdx) {
+ PendingActivityLaunch pal = mPendingActivityLaunches.get(palNdx);
+ if (pal.r == r) {
+ mPendingActivityLaunches.remove(palNdx);
+ }
+ }
+ }
+
void acquireLaunchWakelock() {
if (VALIDATE_WAKE_LOCK_CALLER && Binder.getCallingUid() != Process.myUid()) {
throw new IllegalStateException("Calling must be system uid");
@@ -1924,10 +1962,8 @@ public final class ActivityStackSupervisor implements DisplayListener {
thumbnails = null;
}
- if (isFrontStack(mHomeStack)) {
- booting = mService.mBooting;
- mService.mBooting = false;
- }
+ booting = mService.mBooting;
+ mService.mBooting = false;
if (mStartingUsers.size() > 0) {
startingUsers = new ArrayList<UserStartedState>(mStartingUsers);
@@ -2960,7 +2996,9 @@ public final class ActivityStackSupervisor implements DisplayListener {
synchronized (mService) {
Slog.w(TAG, "Timeout waiting for all activities in task to finish. " +
msg.obj);
- ((ActivityContainer) msg.obj).onTaskListEmptyLocked();
+ final ActivityContainer container = (ActivityContainer) msg.obj;
+ container.mStack.finishAllActivitiesLocked(true);
+ container.onTaskListEmptyLocked();
}
} break;
}
@@ -3054,11 +3092,11 @@ public final class ActivityStackSupervisor implements DisplayListener {
final Message msg =
mHandler.obtainMessage(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this);
- mHandler.sendMessageDelayed(msg, 1000);
+ mHandler.sendMessageDelayed(msg, 2000);
long origId = Binder.clearCallingIdentity();
try {
- mStack.finishAllActivitiesLocked();
+ mStack.finishAllActivitiesLocked(false);
} finally {
Binder.restoreCallingIdentity(origId);
}
diff --git a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java
index 973fa0e9ef54..d9f47642a934 100644
--- a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java
@@ -40,10 +40,10 @@ public class AndroidBidi_Delegate {
case 1: // Layout.DIR_REQUEST_RTL
break; // No change.
case -1:
- dir = Bidi.LEVEL_DEFAULT_LTR;
+ dir = Bidi.LEVEL_DEFAULT_RTL;
break;
case -2:
- dir = Bidi.LEVEL_DEFAULT_RTL;
+ dir = Bidi.LEVEL_DEFAULT_LTR;
break;
default:
// Invalid code. Log error, assume LEVEL_DEFAULT_LTR and continue.
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index fde4e1a31a50..29e1f769289e 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -620,19 +620,16 @@ public final class BridgeContext extends Context {
}
if (value != null) {
- if ((value.getFirst() == ResourceType.STYLE)
- || (value.getFirst() == ResourceType.ATTR)) {
- // look for the style in the current theme, and its parent:
- ResourceValue item = mRenderResources.findItemInTheme(value.getSecond(),
+ if (value.getFirst() == ResourceType.STYLE) {
+ // look for the style in all resources:
+ StyleResourceValue item = mRenderResources.getStyle(value.getSecond(),
isFrameworkRes);
if (item != null) {
- if (item instanceof StyleResourceValue) {
- if (defaultPropMap != null) {
- defaultPropMap.put("style", item.getName());
- }
-
- defStyleValues = (StyleResourceValue)item;
+ if (defaultPropMap != null) {
+ defaultPropMap.put("style", item.getName());
}
+
+ defStyleValues = item;
} else {
Bridge.getLog().error(null,
String.format(
diff --git a/tools/layoutlib/create/README.txt b/tools/layoutlib/create/README.txt
index ef2b185b2e47..32625ae86b58 100644
--- a/tools/layoutlib/create/README.txt
+++ b/tools/layoutlib/create/README.txt
@@ -4,46 +4,45 @@
- Description -
---------------
-Layoutlib_create generates a JAR library used by the Eclipse graphical layout editor
-to perform layout.
+Layoutlib_create generates a JAR library used by the Eclipse graphical layout editor to perform
+layout.
- Usage -
---------
- ./layoutlib_create path/to/android.jar destination.jar
+ ./layoutlib_create destination.jar path/to/android1.jar path/to/android2.jar
- Design Overview -
-------------------
-Layoutlib_create uses the "android.jar" containing all the Java code used by Android
-as generated by the Android build, right before the classes are converted to a DEX format.
+Layoutlib_create uses a few jars from the framework containing the Java code used by Android as
+generated by the Android build, right before the classes are converted to a DEX format.
-The Android JAR can't be used directly in Eclipse:
-- it contains references to native code (which we want to avoid in Eclipse),
-- some classes need to be overridden, for example all the drawing code that is
- replaced by Java 2D calls in Eclipse.
-- some of the classes that need to be changed are final and/or we need access
- to their private internal state.
+These jars can't be used directly in Eclipse as:
+- they contains references to native code (which we want to avoid in Eclipse),
+- some classes need to be overridden, for example all the drawing code that is replaced by Java 2D
+ calls in Eclipse.
+- some of the classes that need to be changed are final and/or we need access to their private
+ internal state.
Consequently this tool:
- parses the input JAR,
- modifies some of the classes directly using some bytecode manipulation,
- filters some packages and removes those we don't want in the output JAR,
- injects some new classes,
-- generates a modified JAR file that is suitable for the Android plugin
- for Eclipse to perform rendering.
+- generates a modified JAR file that is suitable for the Android plugin for Eclipse to perform
+ rendering.
The ASM library is used to do the bytecode modification using its visitor pattern API.
-The layoutlib_create is *NOT* generic. There is no configuration file. Instead all the
-configuration is done in the main() method and the CreateInfo structure is expected to
-change with the Android platform as new classes are added, changed or removed.
+The layoutlib_create is *NOT* generic. There is no configuration file. Instead all the configuration
+is done in the main() method and the CreateInfo structure is expected to change with the Android
+platform as new classes are added, changed or removed.
-The resulting JAR is used by layoutlib_bridge (a.k.a. "the bridge"), also part of the
-platform, that provides all the necessary missing implementation for rendering graphics
-in Eclipse.
+The resulting JAR is used by layoutlib_bridge (a.k.a. "the bridge"), also part of the platform, that
+provides all the necessary missing implementation for rendering graphics in Eclipse.
@@ -58,97 +57,100 @@ The tool works in two phases:
- Analyzer
----------
-The goal of the analyzer is to create a graph of all the classes from the input JAR
-with their dependencies and then only keep the ones we want.
+The goal of the analyzer is to create a graph of all the classes from the input JAR with their
+dependencies and then only keep the ones we want.
-To do that, the analyzer is created with a list of base classes to keep -- everything
-that derives from these is kept. Currently the one such class is android.view.View:
-since we want to render layouts, anything that is sort of a view needs to be kept.
+To do that, the analyzer is created with a list of base classes to keep -- everything that derives
+from these is kept. Currently the one such class is android.view.View: since we want to render
+layouts, anything that is sort of a view needs to be kept.
-The analyzer is also given a list of class names to keep in the output.
-This is done using shell-like glob patterns that filter on the fully-qualified
-class names, for example "android.*.R**" ("*" does not matches dots whilst "**" does,
-and "." and "$" are interpreted as-is).
-In practice we almost but not quite request the inclusion of full packages.
+The analyzer is also given a list of class names to keep in the output. This is done using
+shell-like glob patterns that filter on the fully-qualified class names, for example "android.*.R**"
+("*" does not matches dots whilst "**" does, and "." and "$" are interpreted as-is). In practice we
+almost but not quite request the inclusion of full packages.
-The analyzer is also given a list of classes to exclude. A fake implementation of these
-classes is injected by the Generator.
+The analyzer is also given a list of classes to exclude. A fake implementation of these classes is
+injected by the Generator.
-With this information, the analyzer parses the input zip to find all the classes.
-All classes deriving from the requested bases classes are kept.
-All classes which name matched the glob pattern are kept.
-The analysis then finds all the dependencies of the classes that are to be kept
-using an ASM visitor on the class, the field types, the method types and annotations types.
-Classes that belong to the current JRE are excluded.
+With this information, the analyzer parses the input zip to find all the classes. All classes
+deriving from the requested bases classes are kept. All classes whose name match the glob pattern
+are kept. The analysis then finds all the dependencies of the classes that are to be kept using an
+ASM visitor on the class, the field types, the method types and annotations types. Classes that
+belong to the current JRE are excluded.
-The output of the analyzer is a set of ASM ClassReader instances which are then
-fed to the generator.
+The output of the analyzer is a set of ASM ClassReader instances which are then fed to the
+generator.
- Generator
-----------
-The generator is constructed from a CreateInfo struct that acts as a config file
-and lists:
-- the classes to inject in the output JAR -- these classes are directly implemented
- in layoutlib_create and will be used to interface with the renderer in Eclipse.
+The generator is constructed from a CreateInfo struct that acts as a config file and lists:
+- the classes to inject in the output JAR -- these classes are directly implemented in
+ layoutlib_create and will be used to interface with the renderer in Eclipse.
- specific methods to override (see method stubs details below).
- specific methods for which to delegate calls.
- specific methods to remove based on their return type.
- specific classes to rename.
- specific classes to refactor.
-Each of these are specific strategies we use to be able to modify the Android code
-to fit within the Eclipse renderer. These strategies are explained beow.
+Each of these are specific strategies we use to be able to modify the Android code to fit within the
+Eclipse renderer. These strategies are explained beow.
-The core method of the generator is transform(): it takes an input ASM ClassReader
-and modifies it to produce a byte array suitable for the final JAR file.
+The core method of the generator is transform(): it takes an input ASM ClassReader and modifies it
+to produce a byte array suitable for the final JAR file.
The first step of the transformation is to implement the method delegates.
-The TransformClassAdapter is then used to process the potentially renamed class.
-All protected or private classes are market as public.
-All classes are made non-final.
-Interfaces are left as-is.
+The TransformClassAdapter is then used to process the potentially renamed class. All protected or
+private classes are market as public. All classes are made non-final. Interfaces are left as-is.
-If a method has a return type that must be erased, the whole method is skipped.
-Methods are also changed from protected/private to public.
-The code of the methods is then kept as-is, except for native methods which are
-replaced by a stub. Methods that are to be overridden are also replaced by a stub.
+If a method has a return type that must be erased, the whole method is skipped. Methods are also
+changed from protected/private to public. The code of the methods is then kept as-is, except for
+native methods which are replaced by a stub. Methods that are to be overridden are also replaced by
+a stub.
Finally fields are also visited and changed from protected/private to public.
-The next step of the transformation is changing the name of the class in case
-we requested the class to be renamed. This uses the RenameClassAdapter to also rename
-all inner classes and references in methods and types. Note that other classes are
-not transformed and keep referencing the original name.
-
-The class is then fed to RefactorClassAdapter which is like RenameClassAdapter but
-updates the references in all classes. This is used to update the references of classes
-in the java package that were added in the Dalvik VM but are not a part of the standard
-JVM. The existing classes are modified to update all references to these non-standard
-classes. An alternate implementation of these (com.android.tools.layoutlib.java.*) is
-injected.
-
-The ClassAdapters are chained together to achieve the desired output. (Look at section
-2.2.7 Transformation chains in the asm user guide, link in the References.) The order of
-execution of these is:
+The next step of the transformation is changing the name of the class in case we requested the class
+to be renamed. This uses the RenameClassAdapter to also rename all inner classes and references in
+methods and types. Note that other classes are not transformed and keep referencing the original
+name.
+
+The class is then fed to RefactorClassAdapter which is like RenameClassAdapter but updates the
+references in all classes. This is used to update the references of classes in the java package that
+were added in the Dalvik VM but are not a part of the Desktop VM. The existing classes are
+modified to update all references to these non-desktop classes. An alternate implementation of
+these (com.android.tools.layoutlib.java.*) is injected.
+
+RenameClassAdapter and RefactorClassAdapter both inherit from AbstractClassAdapter which changes the
+class version (version of the JDK used to compile the class) to 50 (corresponding to Java 6), if the
+class was originally compiled with Java 7 (version 51). This is because we don't currently generate
+the StackMapTable correctly and Java 7 VM enforces that classes with version greater than 51 have
+valid StackMapTable. As a side benefit of this, we can continue to support Java 6 because Java 7 on
+Mac has horrible font rendering support.
+
+ReplaceMethodCallsAdapter replaces calls to certain methods. Currently, it only rewrites calls to
+java.lang.System.arraycopy([CI[CII)V, which is not part of the Desktop VM to call the more general
+method java.lang.System.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V.
+
+The ClassAdapters are chained together to achieve the desired output. (Look at section 2.2.7
+Transformation chains in the asm user guide, link in the References.) The order of execution of
+these is:
ClassReader -> [DelegateClassAdapter] -> TransformClassAdapter -> [RenameClassAdapter] ->
-RefactorClassAdapter -> ClassWriter
+RefactorClassAdapter -> [ReplaceMethodCallsAdapter] -> ClassWriter
- Method stubs
--------------
-As indicated above, all native and overridden methods are replaced by a stub.
-We don't have the code to replace with in layoutlib_create.
-Instead the StubMethodAdapter replaces the code of the method by a call to
-OverrideMethod.invokeX(). When using the final JAR, the bridge can register
+As indicated above, all native and overridden methods are replaced by a stub. We don't have the
+code to replace with in layoutlib_create. Instead the StubMethodAdapter replaces the code of the
+method by a call to OverrideMethod.invokeX(). When using the final JAR, the bridge can register
listeners from these overridden method calls based on the method signatures.
-The listeners are currently pretty basic: we only pass the signature of the
-method being called, its caller object and a flag indicating whether the
-method was native. We do not currently provide the parameters. The listener
-can however specify the return value of the overridden method.
+The listeners are currently pretty basic: we only pass the signature of the method being called, its
+caller object and a flag indicating whether the method was native. We do not currently provide the
+parameters. The listener can however specify the return value of the overridden method.
This strategy is now obsolete and replaced by the method delegates.
@@ -156,97 +158,89 @@ This strategy is now obsolete and replaced by the method delegates.
- Strategies
------------
-We currently have 6 strategies to deal with overriding the rendering code
-and make it run in Eclipse. Most of these strategies are implemented hand-in-hand
-by the bridge (which runs in Eclipse) and the generator.
+We currently have 6 strategies to deal with overriding the rendering code and make it run in
+Eclipse. Most of these strategies are implemented hand-in-hand by the bridge (which runs in Eclipse)
+and the generator.
1- Class Injection
This is the easiest: we currently inject the following classes:
-- OverrideMethod and its associated MethodListener and MethodAdapter are used
- to intercept calls to some specific methods that are stubbed out and change
- their return value.
-- CreateInfo class, which configured the generator. Not used yet, but could
- in theory help us track what the generator changed.
-- AutoCloseable and Objects are part of Java 7. To enable us to still run on Java 6, new
- classes are injected. The implementation for these classes has been taken from
- Android's libcore (platform/libcore/luni/src/main/java/java/...).
-- Charsets, IntegralToString and UnsafeByteSequence are not part of the standard JAVA VM.
- They are added to the Dalvik VM for performance reasons. An implementation that is very
- close to the original (which is at platform/libcore/luni/src/main/java/...) is injected.
- Since these classees were in part of the java package, where we can't inject classes,
- all references to these have been updated (See strategy 4- Refactoring Classes).
+- OverrideMethod and its associated MethodListener and MethodAdapter are used to intercept calls to
+ some specific methods that are stubbed out and change their return value.
+- CreateInfo class, which configured the generator. Not used yet, but could in theory help us track
+ what the generator changed.
+- AutoCloseable and Objects are part of Java 7. To enable us to still run on Java 6, new classes are
+ injected. The implementation for these classes has been taken from Android's libcore
+ (platform/libcore/luni/src/main/java/java/...).
+- Charsets, IntegralToString and UnsafeByteSequence are not part of the Desktop VM. They are
+ added to the Dalvik VM for performance reasons. An implementation that is very close to the
+ original (which is at platform/libcore/luni/src/main/java/...) is injected. Since these classees
+ were in part of the java package, where we can't inject classes, all references to these have been
+ updated (See strategy 4- Refactoring Classes).
2- Overriding methods
-As explained earlier, the creator doesn't have any replacement code for
-methods to override. Instead it removes the original code and replaces it
-by a call to a specific OveriddeMethod.invokeX(). The bridge then registers
-a listener on the method signature and can provide an implementation.
+As explained earlier, the creator doesn't have any replacement code for methods to override. Instead
+it removes the original code and replaces it by a call to a specific OveriddeMethod.invokeX(). The
+bridge then registers a listener on the method signature and can provide an implementation.
-This strategy is now obsolete and replaced by the method delegates.
-See strategy 5 below.
+This strategy is now obsolete and replaced by the method delegates (See strategy 6- Method
+Delegates).
3- Renaming classes
-This simply changes the name of a class in its definition, as well as all its
-references in internal inner classes and methods.
-Calls from other classes are not modified -- they keep referencing the original
-class name. This allows the bridge to literally replace an implementation.
+This simply changes the name of a class in its definition, as well as all its references in internal
+inner classes and methods. Calls from other classes are not modified -- they keep referencing the
+original class name. This allows the bridge to literally replace an implementation.
-An example will make this easier: android.graphics.Paint is the main drawing
-class that we need to replace. To do so, the generator renames Paint to _original_Paint.
-Later the bridge provides its own replacement version of Paint which will be used
-by the rest of the Android stack. The replacement version of Paint can still use
-(either by inheritance or delegation) all the original non-native code of _original_Paint
-if it so desires.
+An example will make this easier: android.graphics.Paint is the main drawing class that we need to
+replace. To do so, the generator renames Paint to _original_Paint. Later the bridge provides its own
+replacement version of Paint which will be used by the rest of the Android stack. The replacement
+version of Paint can still use (either by inheritance or delegation) all the original non-native
+code of _original_Paint if it so desires.
-Some of the Android classes are basically wrappers over native objects and since
-we don't have the native code in Eclipse, we need to provide a full alternate
-implementation. Sub-classing doesn't work as some native methods are static and
-we don't control object creation.
+Some of the Android classes are basically wrappers over native objects and since we don't have the
+native code in Eclipse, we need to provide a full alternate implementation. Sub-classing doesn't
+work as some native methods are static and we don't control object creation.
This won't rename/replace the inner static methods of a given class.
4- Refactoring classes
-This is very similar to the Renaming classes except that it also updates the reference in
-all classes. This is done for classes which are added to the Dalvik VM for performance
-reasons but are not present in the Standard Java VM. An implementation for these classes
-is also injected.
+This is very similar to the Renaming classes except that it also updates the reference in all
+classes. This is done for classes which are added to the Dalvik VM for performance reasons but are
+not present in the Desktop VM. An implementation for these classes is also injected.
5- Method erasure based on return type
-This is mostly an implementation detail of the bridge: in the Paint class
-mentioned above, some inner static classes are used to pass around
-attributes (e.g. FontMetrics, or the Style enum) and all the original implementation
-is native.
+This is mostly an implementation detail of the bridge: in the Paint class mentioned above, some
+inner static classes are used to pass around attributes (e.g. FontMetrics, or the Style enum) and
+all the original implementation is native.
-In this case we have a strategy that tells the generator that anything returning, for
-example, the inner class Paint$Style in the Paint class should be discarded and the
-bridge will provide its own implementation.
+In this case we have a strategy that tells the generator that anything returning, for example, the
+inner class Paint$Style in the Paint class should be discarded and the bridge will provide its own
+implementation.
6- Method Delegates
-This strategy is used to override method implementations.
-Given a method SomeClass.MethodName(), 1 or 2 methods are generated:
-a- A copy of the original method named SomeClass.MethodName_Original().
- The content is the original method as-is from the reader.
- This step is omitted if the method is native, since it has no Java implementation.
-b- A brand new implementation of SomeClass.MethodName() which calls to a
- non-existing static method named SomeClass_Delegate.MethodName().
- The implementation of this 'delegate' method is done in layoutlib_brigde.
-
-The delegate method is a static method.
-If the original method is non-static, the delegate method receives the original 'this'
-as its first argument. If the original method is an inner non-static method, it also
-receives the inner 'this' as the second argument.
+This strategy is used to override method implementations. Given a method SomeClass.MethodName(), 1
+or 2 methods are generated:
+a- A copy of the original method named SomeClass.MethodName_Original(). The content is the original
+method as-is from the reader. This step is omitted if the method is native, since it has no Java
+implementation.
+b- A brand new implementation of SomeClass.MethodName() which calls to a non-existing static method
+named SomeClass_Delegate.MethodName(). The implementation of this 'delegate' method is done in
+layoutlib_brigde.
+
+The delegate method is a static method. If the original method is non-static, the delegate method
+receives the original 'this' as its first argument. If the original method is an inner non-static
+method, it also receives the inner 'this' as the second argument.
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java
index 3e75c9ebc477..8373e300f9b5 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java
@@ -32,6 +32,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -63,7 +64,8 @@ public class AsmAnalyzer {
private final Set<String> mExcludedClasses;
/** Glob patterns of files to keep as is. */
private final String[] mIncludeFileGlobs;
- /** Copy these files into the output as is. */
+ /** Internal names of classes that contain method calls that need to be rewritten. */
+ private final Set<String> mReplaceMethodCallClasses = new HashSet<String>();
/**
* Creates a new analyzer.
@@ -109,6 +111,7 @@ public class AsmAnalyzer {
mGen.setKeep(found);
mGen.setDeps(deps);
mGen.setCopyFiles(filesFound);
+ mGen.setRewriteMethodCallClasses(mReplaceMethodCallClasses);
}
}
@@ -118,7 +121,7 @@ public class AsmAnalyzer {
*
* @param classes The map of class name => ASM ClassReader. Class names are
* in the form "android.view.View".
- * @param fileFound The map of file name => InputStream. The file name is
+ * @param filesFound The map of file name => InputStream. The file name is
* in the form "android/data/dataFile".
*/
void parseZip(List<String> jarPathList, Map<String, ClassReader> classes,
@@ -143,8 +146,8 @@ public class AsmAnalyzer {
String className = classReaderToClassName(cr);
classes.put(className, cr);
} else {
- for (int i = 0; i < includeFilePatterns.length; ++i) {
- if (includeFilePatterns[i].matcher(entry.getName()).matches()) {
+ for (Pattern includeFilePattern : includeFilePatterns) {
+ if (includeFilePattern.matcher(entry.getName()).matches()) {
filesFound.put(entry.getName(), zip.getInputStream(entry));
break;
}
@@ -321,6 +324,7 @@ public class AsmAnalyzer {
deps, new_deps);
for (ClassReader cr : inOutKeepClasses.values()) {
+ visitor.setClassName(cr.getClassName());
cr.accept(visitor, 0 /* flags */);
}
@@ -367,6 +371,8 @@ public class AsmAnalyzer {
/** New classes to keep as-is found by this visitor. */
private final Map<String, ClassReader> mOutKeep;
+ private String mClassName;
+
/**
* Creates a new visitor that will find all the dependencies for the visited class.
* Types which are already in the zipClasses, keepClasses or inDeps are not marked.
@@ -390,6 +396,10 @@ public class AsmAnalyzer {
mOutDeps = outDeps;
}
+ private void setClassName(String className) {
+ mClassName = className;
+ }
+
/**
* Considers the given class name as a dependency.
* If it does, add to the mOutDeps map.
@@ -429,7 +439,7 @@ public class AsmAnalyzer {
// - android classes are added to dependencies
// - non-android classes are added to the list of classes to keep as-is (they don't need
// to be stubbed).
- if (className.indexOf("android") >= 0) { // TODO make configurable
+ if (className.contains("android")) { // TODO make configurable
mOutDeps.put(className, cr);
} else {
mOutKeep.put(className, cr);
@@ -594,7 +604,7 @@ public class AsmAnalyzer {
// type and exceptions do not use generic types.
considerSignature(signature);
- return new MyMethodVisitor();
+ return new MyMethodVisitor(mClassName);
}
@Override
@@ -614,8 +624,11 @@ public class AsmAnalyzer {
private class MyMethodVisitor extends MethodVisitor {
- public MyMethodVisitor() {
+ private String mOwnerClass;
+
+ public MyMethodVisitor(String ownerClass) {
super(Opcodes.ASM4);
+ mOwnerClass = ownerClass;
}
@@ -709,6 +722,13 @@ public class AsmAnalyzer {
considerName(owner);
// desc is the method's descriptor (see Type).
considerDesc(desc);
+
+
+ // Check if method is java.lang.System.arrayCopy([CI[CII)V
+ if (owner.equals("java/lang/System") && name.equals("arraycopy")
+ && desc.equals("([CI[CII)V")) {
+ mReplaceMethodCallClasses.add(mOwnerClass);
+ }
}
// instruction multianewarray, whatever that is
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java
index 207d8ae7b2d9..c96a1434b145 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java
@@ -21,7 +21,6 @@ import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -55,6 +54,8 @@ public class AsmGenerator {
private Map<String, ClassReader> mDeps;
/** All files that are to be copied as-is. */
private Map<String, InputStream> mCopyFiles;
+ /** All classes where certain method calls need to be rewritten. */
+ private Set<String> mReplaceMethodCallsClasses;
/** Counter of number of classes renamed during transform. */
private int mRenameCount;
/** FQCN Names of the classes to rename: map old-FQCN => new-FQCN */
@@ -133,7 +134,7 @@ public class AsmGenerator {
assert i + 1 < n;
String oldFqcn = binaryToInternalClassName(refactorClasses[i]);
String newFqcn = binaryToInternalClassName(refactorClasses[i + 1]);
- mRefactorClasses.put(oldFqcn, newFqcn);;
+ mRefactorClasses.put(oldFqcn, newFqcn);
}
// create the map of renamed class -> return type of method to delete.
@@ -203,23 +204,12 @@ public class AsmGenerator {
mCopyFiles = copyFiles;
}
- /** Gets the map of classes to output as-is, except if they have native methods */
- public Map<String, ClassReader> getKeep() {
- return mKeep;
- }
-
- /** Gets the map of dependencies that must be completely stubbed */
- public Map<String, ClassReader> getDeps() {
- return mDeps;
- }
-
- /** Gets the map of files to output as-is. */
- public Map<String, InputStream> getCopyFiles() {
- return mCopyFiles;
+ public void setRewriteMethodCallClasses(Set<String> rewriteMethodCallClasses) {
+ mReplaceMethodCallsClasses = rewriteMethodCallClasses;
}
/** Generates the final JAR */
- public void generate() throws FileNotFoundException, IOException {
+ public void generate() throws IOException {
TreeMap<String, byte[]> all = new TreeMap<String, byte[]>();
for (Class<?> clazz : mInjectClasses) {
@@ -329,14 +319,14 @@ public class AsmGenerator {
String newName = transformName(className);
// transformName returns its input argument if there's no need to rename the class
- if (newName != className) {
+ if (!newName.equals(className)) {
mRenameCount++;
// This class is being renamed, so remove it from the list of classes not renamed.
mClassesNotRenamed.remove(className);
}
mLog.debug("Transform %s%s%s%s", className,
- newName == className ? "" : " (renamed to " + newName + ")",
+ newName.equals(className) ? "" : " (renamed to " + newName + ")",
hasNativeMethods ? " -- has natives" : "",
stubNativesOnly ? " -- stub natives only" : "");
@@ -344,8 +334,14 @@ public class AsmGenerator {
// original class reader.
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
- ClassVisitor cv = new RefactorClassAdapter(cw, mRefactorClasses);
- if (newName != className) {
+ ClassVisitor cv = cw;
+
+ if (mReplaceMethodCallsClasses.contains(className)) {
+ cv = new ReplaceMethodCallsAdapter(cv);
+ }
+
+ cv = new RefactorClassAdapter(cv, mRefactorClasses);
+ if (!newName.equals(className)) {
cv = new RenameClassAdapter(cv, className, newName);
}
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java
index 2e952fcff4c2..ad106569a0a7 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java
@@ -193,8 +193,7 @@ public class Main {
private static boolean processArgs(Log log, String[] args,
ArrayList<String> osJarPath, String[] osDestJar) {
boolean needs_dest = true;
- for (int i = 0; i < args.length; i++) {
- String s = args[i];
+ for (String s : args) {
if (s.equals("-v")) {
log.setVerbose(true);
} else if (s.equals("-p")) {
@@ -212,7 +211,7 @@ public class Main {
osJarPath.add(s);
}
} else {
- log.error("Unknow argument: %s", s);
+ log.error("Unknown argument: %s", s);
return false;
}
}
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java
new file mode 100644
index 000000000000..e57eba107999
--- /dev/null
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 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.tools.layoutlib.create;
+
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
+
+/**
+ * Replaces calls to certain methods that do not exist in the Desktop VM.
+ */
+public class ReplaceMethodCallsAdapter extends ClassVisitor {
+ public ReplaceMethodCallsAdapter(ClassVisitor cv) {
+ super(Opcodes.ASM4, cv);
+ }
+
+ @Override
+ public MethodVisitor visitMethod(int access, String name, String desc, String signature,
+ String[] exceptions) {
+ return new MyMethodVisitor(super.visitMethod(access, name, desc, signature, exceptions));
+ }
+
+ private class MyMethodVisitor extends MethodVisitor {
+
+ public MyMethodVisitor(MethodVisitor mv) {
+ super(Opcodes.ASM4, mv);
+ }
+
+ @Override
+ public void visitMethodInsn(int opcode, String owner, String name, String desc) {
+ // Check if method is java.lang.System.arrayCopy([CI[CII)V
+ if (owner.equals("java/lang/System") && name.equals("arraycopy")
+ && desc.equals("([CI[CII)V")) {
+ desc = "(Ljava/lang/Object;ILjava/lang/Object;II)V";
+ }
+ super.visitMethodInsn(opcode, owner, name, desc);
+ }
+ }
+}