Bug 1695082 - Update WebRTC permission panel copy. r=flod,pbz,fluent-reviewers
authorMike Conley <mconley@mozilla.com>
Tue, 09 Mar 2021 15:40:36 +0000
changeset 570319 12dd9dce97f92b2214c50bfafa3e68cbc3d53a59
parent 570318 892d845136474442f3ab7e5f8c2b4f39ebabaa27
child 570320 343159dd0da038fdc94973ec2b9f429641e99d21
push id138035
push usermconley@mozilla.com
push dateTue, 09 Mar 2021 15:55:35 +0000
treeherderautoland@343159dd0da0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersflod, pbz, fluent-reviewers
bugs1695082
milestone88.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1695082 - Update WebRTC permission panel copy. r=flod,pbz,fluent-reviewers Differential Revision: https://phabricator.services.mozilla.com/D107560
browser/actors/WebRTCParent.jsm
browser/base/content/popup-notifications.inc
browser/locales/en-US/browser/browser.ftl
browser/locales/en-US/chrome/browser/browser.properties
--- a/browser/actors/WebRTCParent.jsm
+++ b/browser/actors/WebRTCParent.jsm
@@ -499,38 +499,38 @@ function prompt(aActor, aBrowser, aReque
   // Mind the order, because for simplicity we're iterating over the list using
   // "includes()". This allows the rotation of string identifiers. We list the
   // full identifiers here so they can be cross-referenced more easily.
   let joinedRequestTypes = requestTypes.join("And");
   let requestMessages;
   if (aRequest.secondOrigin) {
     requestMessages = [
       // Individual request types first.
-      "getUserMedia.shareCameraUnsafeDelegation.message",
-      "getUserMedia.shareMicrophoneUnsafeDelegations.message",
-      "getUserMedia.shareScreenUnsafeDelegation.message",
-      "getUserMedia.shareAudioCaptureUnsafeDelegation.message",
+      "getUserMedia.shareCameraUnsafeDelegation2.message",
+      "getUserMedia.shareMicrophoneUnsafeDelegations2.message",
+      "getUserMedia.shareScreenUnsafeDelegation2.message",
+      "getUserMedia.shareAudioCaptureUnsafeDelegation2.message",
       // Combinations of the above request types last.
-      "getUserMedia.shareCameraAndMicrophoneUnsafeDelegation.message",
-      "getUserMedia.shareCameraAndAudioCaptureUnsafeDelegation.message",
-      "getUserMedia.shareScreenAndMicrophoneUnsafeDelegation.message",
-      "getUserMedia.shareScreenAndAudioCaptureUnsafeDelegation.message",
+      "getUserMedia.shareCameraAndMicrophoneUnsafeDelegation2.message",
+      "getUserMedia.shareCameraAndAudioCaptureUnsafeDelegation2.message",
+      "getUserMedia.shareScreenAndMicrophoneUnsafeDelegation2.message",
+      "getUserMedia.shareScreenAndAudioCaptureUnsafeDelegation2.message",
     ];
   } else {
     requestMessages = [
       // Individual request types first.
-      "getUserMedia.shareCamera2.message",
-      "getUserMedia.shareMicrophone2.message",
-      "getUserMedia.shareScreen3.message",
-      "getUserMedia.shareAudioCapture2.message",
+      "getUserMedia.shareCamera3.message",
+      "getUserMedia.shareMicrophone3.message",
+      "getUserMedia.shareScreen4.message",
+      "getUserMedia.shareAudioCapture3.message",
       // Combinations of the above request types last.
-      "getUserMedia.shareCameraAndMicrophone2.message",
-      "getUserMedia.shareCameraAndAudioCapture2.me ssage",
-      "getUserMedia.shareScreenAndMicrophone3.message",
-      "getUserMedia.shareScreenAndAudioCapture3.message",
+      "getUserMedia.shareCameraAndMicrophone3.message",
+      "getUserMedia.shareCameraAndAudioCapture3.message",
+      "getUserMedia.shareScreenAndMicrophone4.message",
+      "getUserMedia.shareScreenAndAudioCapture4.message",
     ];
   }
 
   let stringId = requestMessages.find(id => id.includes(joinedRequestTypes));
   let message = aRequest.secondOrigin
     ? stringBundle.getFormattedString(stringId, ["<>", "{}"])
     : stringBundle.getFormattedString(stringId, ["<>"]);
 
@@ -576,58 +576,58 @@ function prompt(aActor, aBrowser, aReque
       return messages.map(msg => {
         return msg.attributes.reduce((acc, attribute) => {
           acc[attribute.name] = attribute.value;
           return acc;
         }, {});
       });
     };
 
-    let [notNow, never] = convertAttributesToObjects(
+    let [block, alwaysBlock] = convertAttributesToObjects(
       localization.formatMessagesSync([
-        { id: "popup-screen-sharing-not-now" },
-        { id: "popup-screen-sharing-never" },
+        { id: "popup-screen-sharing-block" },
+        { id: "popup-screen-sharing-always-block" },
       ])
     );
 
     secondaryActions = [
       {
-        label: notNow.label,
-        accessKey: notNow.accesskey,
+        label: block.label,
+        accessKey: block.accesskey,
         callback(aState) {
           aActor.denyRequest(aRequest);
           SitePermissions.setForPrincipal(
             principal,
             "screen",
             SitePermissions.BLOCK,
             SitePermissions.SCOPE_TEMPORARY,
             notification.browser
           );
         },
       },
       {
-        label: never.label,
-        accessKey: never.accesskey,
+        label: alwaysBlock.label,
+        accessKey: alwaysBlock.accesskey,
         callback(aState) {
           aActor.denyRequest(aRequest);
           SitePermissions.setForPrincipal(
             principal,
             "screen",
             SitePermissions.BLOCK,
             SitePermissions.SCOPE_PERSISTENT,
             notification.browser
           );
         },
       },
     ];
   } else {
     secondaryActions = [
       {
-        label: stringBundle.getString("getUserMedia.dontAllow.label"),
-        accessKey: stringBundle.getString("getUserMedia.dontAllow.accesskey"),
+        label: stringBundle.getString("getUserMedia.block.label"),
+        accessKey: stringBundle.getString("getUserMedia.block.accesskey"),
         callback(aState) {
           aActor.denyRequest(aRequest);
           let scope = SitePermissions.SCOPE_TEMPORARY;
           if (aState && aState.checkboxChecked) {
             scope = SitePermissions.SCOPE_PERSISTENT;
           }
           if (audioDevices.length) {
             SitePermissions.setForPrincipal(
@@ -752,17 +752,17 @@ function prompt(aActor, aBrowser, aReque
         // Removing the child nodes of the menupopup doesn't clear the value
         // attribute of the menulist. This can have unfortunate side effects
         // when the list is rebuilt with a different content, so we remove
         // the value attribute and unset the selectedItem explicitly.
         menupopup.parentNode.removeAttribute("value");
         menupopup.parentNode.selectedItem = null;
 
         let label = doc.getElementById("webRTC-selectWindow-label");
-        const gumStringId = "getUserMedia.selectWindowOrScreen";
+        const gumStringId = "getUserMedia.selectWindowOrScreen2";
         label.setAttribute(
           "value",
           stringBundle.getString(gumStringId + ".label")
         );
         label.setAttribute(
           "accesskey",
           stringBundle.getString(gumStringId + ".accesskey")
         );
@@ -1194,17 +1194,17 @@ function prompt(aActor, aBrowser, aReque
     };
   }
 
   // If the notification silencing feature is enabled and we're sharing a
   // screen, then the checkbox for the permission panel is what controls
   // notification silencing.
   if (notificationSilencingEnabled && sharingScreen) {
     let [silenceNotifications] = localization.formatMessagesSync([
-      { id: "popup-silence-notifications-checkbox" },
+      { id: "popup-mute-notifications-checkbox" },
     ]);
 
     options.checkbox = {
       label: silenceNotifications.value,
       checked: false,
       checkedState: {
         disableMainAction: false,
       },
--- a/browser/base/content/popup-notifications.inc
+++ b/browser/base/content/popup-notifications.inc
@@ -5,17 +5,17 @@
            position="after_start"
            hidden="true"
            orient="vertical"
            noautofocus="true"
            role="alert"/>
 
     <popupnotification id="webRTC-shareDevices-notification" hidden="true">
       <popupnotificationcontent id="webRTC-selectCamera" orient="vertical">
-        <label data-l10n-id="popup-select-camera"
+        <label data-l10n-id="popup-select-camera-device"
                control="webRTC-selectCamera-menulist"/>
         <deck id="webRTC-selectCamera-deck">
           <menulist id="webRTC-selectCamera-menulist">
             <menupopup id="webRTC-selectCamera-menupopup"/>
           </menulist>
           <label id="webRTC-selectCamera-label" class="webRTC-selectDevice-label"></label>
         </deck>
       </popupnotificationcontent>
@@ -34,17 +34,17 @@
         <html:video id="webRTC-previewVideo" tabindex="-1"/>
         <vbox id="webRTC-previewWarningBox">
           <spacer flex="1"/>
           <description id="webRTC-previewWarning"/>
         </vbox>
       </popupnotificationcontent>
 
       <popupnotificationcontent id="webRTC-selectMicrophone" orient="vertical">
-        <label data-l10n-id="popup-select-microphone"
+        <label data-l10n-id="popup-select-microphone-device"
                control="webRTC-selectMicrophone-menulist"/>
         <deck id="webRTC-selectMicrophone-deck">
           <menulist id="webRTC-selectMicrophone-menulist">
             <menupopup id="webRTC-selectMicrophone-menupopup"/>
           </menulist>
           <label id="webRTC-selectMicrophone-label" class="webRTC-selectDevice-label"></label>
         </deck>
       </popupnotificationcontent>
--- a/browser/locales/en-US/browser/browser.ftl
+++ b/browser/locales/en-US/browser/browser.ftl
@@ -369,33 +369,33 @@ browser-tab-audio-pip = PICTURE-IN-PICTU
 browser-import-button2 =
     .label = Import bookmarks…
     .tooltiptext = Import bookmarks from another browser to { -brand-short-name }.
 
 bookmarks-toolbar-empty-message = For quick access, place your bookmarks here on the bookmarks toolbar. <a data-l10n-name="manage-bookmarks">Manage bookmarks…</a>
 
 ## WebRTC Pop-up notifications
 
-popup-select-camera =
-    .value = Camera to share:
+popup-select-camera-device =
+    .value = Camera:
     .accesskey = C
-popup-select-microphone =
-    .value = Microphone to share:
+popup-select-microphone-device =
+    .value = Microphone:
     .accesskey = M
 popup-all-windows-shared = All visible windows on your screen will be shared.
 
-popup-screen-sharing-not-now =
-  .label = Not Now
+popup-screen-sharing-block =
+  .label = Block
+  .accesskey = B
+
+popup-screen-sharing-always-block =
+  .label = Always block
   .accesskey = w
 
-popup-screen-sharing-never =
-  .label = Never Allow
-  .accesskey = N
-
-popup-silence-notifications-checkbox = Disable notifications from { -brand-short-name } while sharing
+popup-mute-notifications-checkbox = Mute website notifications while sharing
 
 ## WebRTC window or screen share tab switch warning
 
 sharing-warning-window = You are sharing { -brand-short-name }. Other people can see when you switch to a new tab.
 sharing-warning-screen = You are sharing your entire screen. Other people can see when you switch to a new tab.
 sharing-warning-proceed-to-tab =
   .label = Proceed to Tab
 sharing-warning-disable-for-session =
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -713,83 +713,83 @@ processHang.button_debug.accessKey = D
 
 # LOCALIZATION NOTE (fullscreenButton.tooltip): %S is the keyboard shortcut for full screen
 fullscreenButton.tooltip=Display the window in full screen (%S)
 
 # These are visible when opening the popup inside the bookmarks sidebar
 sidebar.moveToLeft=Move Sidebar to Left
 sidebar.moveToRight=Move Sidebar to Right
 
-# LOCALIZATION NOTE (getUserMedia.shareCamera2.message,
-#                    getUserMedia.shareMicrophone2.message,
-#                    getUserMedia.shareScreen3.message,
-#                    getUserMedia.shareCameraAndMicrophone2.message,
-#                    getUserMedia.shareCameraAndAudioCapture2.message,
-#                    getUserMedia.shareScreenAndMicrophone3.message,
-#                    getUserMedia.shareScreenAndAudioCapture3.message,
-#                    getUserMedia.shareAudioCapture2.message):
+# LOCALIZATION NOTE (getUserMedia.shareCamera3.message,
+#                    getUserMedia.shareMicrophone3.message,
+#                    getUserMedia.shareScreen4.message,
+#                    getUserMedia.shareCameraAndMicrophone3.message,
+#                    getUserMedia.shareCameraAndAudioCapture3.message,
+#                    getUserMedia.shareScreenAndMicrophone4.message,
+#                    getUserMedia.shareScreenAndAudioCapture4.message,
+#                    getUserMedia.shareAudioCapture3.message):
 # %S is the website origin (e.g. www.mozilla.org)
-getUserMedia.shareCamera2.message = Will you allow %S to use your camera?
-getUserMedia.shareMicrophone2.message = Will you allow %S to use your microphone?
-getUserMedia.shareScreen3.message = Will you allow %S to see your screen?
-getUserMedia.shareCameraAndMicrophone2.message = Will you allow %S to use your camera and microphone?
-getUserMedia.shareCameraAndAudioCapture2.message = Will you allow %S to use your camera and listen to this tab’s audio?
-getUserMedia.shareScreenAndMicrophone3.message = Will you allow %S to use your microphone and see your screen?
-getUserMedia.shareScreenAndAudioCapture3.message = Will you allow %S to listen to this tab’s audio and see your screen?
-getUserMedia.shareAudioCapture2.message = Will you allow %S to listen to this tab’s audio?
+getUserMedia.shareCamera3.message = Allow %S to use your camera?
+getUserMedia.shareMicrophone3.message = Allow %S to use your microphone?
+getUserMedia.shareScreen4.message = Allow %S to see your screen?
+getUserMedia.shareCameraAndMicrophone3.message = Allow %S to use your camera and microphone?
+getUserMedia.shareCameraAndAudioCapture3.message = Allow %S to use your camera and listen to this tab’s audio?
+getUserMedia.shareScreenAndMicrophone4.message = Allow %S to use your microphone and see your screen?
+getUserMedia.shareScreenAndAudioCapture4.message = Allow %S to listen to this tab’s audio and see your screen?
+getUserMedia.shareAudioCapture3.message = Allow %S to listen to this tab’s audio?
 
-# LOCALIZATION NOTE (getUserMedia.shareCameraUnsafeDelegation.message,
-#                    getUserMedia.shareMicrophoneUnsafeDelegation.message,
-#                    getUserMedia.shareScreenUnsafeDelegation.message,
-#                    getUserMedia.shareCameraAndMicrophoneUnsafeDelegation.message,
-#                    getUserMedia.shareCameraAndAudioCaptureUnsafeDelegation.message,
-#                    getUserMedia.shareScreenAndMicrophoneUnsafeDelegation.message,
-#                    getUserMedia.shareScreenAndAudioCaptureUnsafeDelegation.message,
+# LOCALIZATION NOTE (getUserMedia.shareCameraUnsafeDelegation2.message,
+#                    getUserMedia.shareMicrophoneUnsafeDelegation2.message,
+#                    getUserMedia.shareScreenUnsafeDelegation2.message,
+#                    getUserMedia.shareCameraAndMicrophoneUnsafeDelegation2.message,
+#                    getUserMedia.shareCameraAndAudioCaptureUnsafeDelegation2.message,
+#                    getUserMedia.shareScreenAndMicrophoneUnsafeDelegation2.message,
+#                    getUserMedia.shareScreenAndAudioCaptureUnsafeDelegation2.message,
 # %1$S is the first party origin.
 # %2$S is the third party origin.
-getUserMedia.shareCameraUnsafeDelegation.message = Will you allow %1$S to give %2$S access to your camera?
-getUserMedia.shareMicrophoneUnsafeDelegations.message = Will you allow %1$S to give %2$S access to your microphone?
-getUserMedia.shareScreenUnsafeDelegation.message = Will you allow %1$S to give %2$S permission to see your screen?
-getUserMedia.shareCameraAndMicrophoneUnsafeDelegation.message = Will you allow %1$S to give %2$S access to your camera and microphone?
-getUserMedia.shareCameraAndAudioCaptureUnsafeDelegation.message = Will you allow %1$S to give %2$S access to your camera and listen to this tab’s audio?
-getUserMedia.shareScreenAndMicrophoneUnsafeDelegation.message = Will you allow %1$S to give %2$S access to your microphone and see your screen?
-getUserMedia.shareScreenAndAudioCaptureUnsafeDelegation.message = Will you allow %1$S to give %2$S permission to listen to this tab’s audio and see your screen?
+getUserMedia.shareCameraUnsafeDelegation2.message = Allow %1$S to give %2$S access to your camera?
+getUserMedia.shareMicrophoneUnsafeDelegations2.message = Allow %1$S to give %2$S access to your microphone?
+getUserMedia.shareScreenUnsafeDelegation2.message = Allow %1$S to give %2$S permission to see your screen?
+getUserMedia.shareCameraAndMicrophoneUnsafeDelegation2.message = Allow %1$S to give %2$S access to your camera and microphone?
+getUserMedia.shareCameraAndAudioCaptureUnsafeDelegation2.message = Allow %1$S to give %2$S access to your camera and listen to this tab’s audio?
+getUserMedia.shareScreenAndMicrophoneUnsafeDelegation2.message = Allow %1$S to give %2$S access to your microphone and see your screen?
+getUserMedia.shareScreenAndAudioCaptureUnsafeDelegation2.message = Allow %1$S to give %2$S permission to listen to this tab’s audio and see your screen?
 
 # LOCALIZATION NOTE (getUserMedia.shareScreenWarning.message): NB: inserted via innerHTML, so please don't use <, > or & in this string.
 # %S will be the 'learn more' link
 getUserMedia.shareScreenWarning.message = Only share screens with sites you trust. Sharing can allow deceptive sites to browse as you and steal your private data. %S
 # LOCALIZATION NOTE (getUserMedia.shareFirefoxWarning.message): NB: inserted via innerHTML, so please don't use <, > or & in this string.
 # %1$S is brandShortName (eg. Firefox)
 # %2$S will be the 'learn more' link
 getUserMedia.shareFirefoxWarning.message = Only share %1$S with sites you trust. Sharing can allow deceptive sites to browse as you and steal your private data. %2$S
 # LOCALIZATION NOTE(getUserMedia.shareScreen.learnMoreLabel): NB: inserted via innerHTML, so please don't use <, > or & in this string.
-getUserMedia.shareScreen.learnMoreLabel = Learn More
-getUserMedia.selectWindowOrScreen.label=Window or Screen to share:
-getUserMedia.selectWindowOrScreen.accesskey=W
-getUserMedia.pickWindowOrScreen.label = Select Window or Screen
+getUserMedia.shareScreen.learnMoreLabel = Learn more
+getUserMedia.selectWindowOrScreen2.label = Window or screen:
+getUserMedia.selectWindowOrScreen2.accesskey = W
+getUserMedia.pickWindowOrScreen.label = Select window or screen
 getUserMedia.shareEntireScreen.label = Entire screen
 getUserMedia.sharePipeWirePortal.label = Use operating system settings
 # LOCALIZATION NOTE (getUserMedia.shareMonitor.label):
 # %S is screen number (digits 1, 2, etc)
 # Example: Screen 1, Screen 2,..
 getUserMedia.shareMonitor.label = Screen %S
 # LOCALIZATION NOTE (getUserMedia.shareApplicationWindowCount.label):
 # Semicolon-separated list of plural forms.
 # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
 # Replacement for #1 is the name of the application.
 # Replacement for #2 is the number of windows currently displayed by the application.
 getUserMedia.shareApplicationWindowCount.label=#1 (#2 window);#1 (#2 windows)
 # LOCALIZATION NOTE (getUserMedia.allow.label,
-#                    getUserMedia.dontAllow.label):
+#                    getUserMedia.block.label):
 # These two buttons are the possible answers to the various prompts in the
 # "getUserMedia.share{device}.message" strings.
 getUserMedia.allow.label = Allow
 getUserMedia.allow.accesskey = A
-getUserMedia.dontAllow.label = Don’t Allow
-getUserMedia.dontAllow.accesskey = D
+getUserMedia.block.label = Block
+getUserMedia.block.accesskey = B
 getUserMedia.remember=Remember this decision
 # LOCALIZATION NOTE (getUserMedia.reasonForNoPermanentAllow.screen3,
 #                    getUserMedia.reasonForNoPermanentAllow.audio,
 #                    getUserMedia.reasonForNoPermanentAllow.insecure):
 # %S is brandShortName
 getUserMedia.reasonForNoPermanentAllow.screen3=%S can not allow permanent access to your screen.
 getUserMedia.reasonForNoPermanentAllow.audio=%S can not allow permanent access to your tab’s audio without asking which tab to share.
 getUserMedia.reasonForNoPermanentAllow.insecure=Your connection to this site is not secure. To protect you, %S will only allow access for this session.