forked from mirrors/gecko-dev
		
	 3fad3847c2
			
		
	
	
		3fad3847c2
		
	
	
	
	
		
			
			This is not an exhaustive redress of the WebRTC panel. It just replaces the labels preceding the camera/microphone selectors with icons if Proton is enabled. There's still a bunch of styling work to do in this panel for Proton, but that will occur in a follow-up patch. Differential Revision: https://phabricator.services.mozilla.com/D107718
		
			
				
	
	
		
			159 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| // This is loaded into all XUL windows. Wrap in a block to prevent
 | |
| // leaking to window scope.
 | |
| {
 | |
|   class MozPopupNotification extends MozXULElement {
 | |
|     static get inheritedAttributes() {
 | |
|       return {
 | |
|         ".popup-notification-icon": "popupid,src=icon,class=iconclass,hasicon",
 | |
|         ".popup-notification-origin": "value=origin,tooltiptext=origin",
 | |
|         ".popup-notification-description": "popupid,id=descriptionid",
 | |
|         ".popup-notification-description > span:first-of-type":
 | |
|           "text=label,popupid",
 | |
|         ".popup-notification-description > b:first-of-type":
 | |
|           "text=name,popupid",
 | |
|         ".popup-notification-description > span:nth-of-type(2)":
 | |
|           "text=endlabel,popupid",
 | |
|         ".popup-notification-description > b:last-of-type":
 | |
|           "text=secondname,popupid",
 | |
|         ".popup-notification-description > span:last-of-type":
 | |
|           "text=secondendlabel,popupid",
 | |
|         ".popup-notification-hint-text": "text=hinttext",
 | |
|         ".popup-notification-closebutton":
 | |
|           "oncommand=closebuttoncommand,hidden=closebuttonhidden",
 | |
|         ".popup-notification-learnmore-link":
 | |
|           "onclick=learnmoreclick,href=learnmoreurl",
 | |
|         ".popup-notification-warning": "hidden=warninghidden,text=warninglabel",
 | |
|         ".popup-notification-button-container > .popup-notification-secondary-button":
 | |
|           "oncommand=secondarybuttoncommand,label=secondarybuttonlabel,accesskey=secondarybuttonaccesskey,hidden=secondarybuttonhidden,dropmarkerhidden",
 | |
|         ".popup-notification-button-container > toolbarseparator":
 | |
|           "hidden=dropmarkerhidden",
 | |
|         ".popup-notification-dropmarker":
 | |
|           "onpopupshown=dropmarkerpopupshown,hidden=dropmarkerhidden",
 | |
|         ".popup-notification-dropmarker > menupopup": "oncommand=menucommand",
 | |
|         ".popup-notification-primary-button":
 | |
|           "oncommand=buttoncommand,label=buttonlabel,accesskey=buttonaccesskey,default=buttonhighlight,disabled=mainactiondisabled",
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     attributeChangedCallback(name, oldValue, newValue) {
 | |
|       if (!this._hasSlotted) {
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       super.attributeChangedCallback(name, oldValue, newValue);
 | |
|     }
 | |
| 
 | |
|     show() {
 | |
|       this.slotContents();
 | |
| 
 | |
|       if (this.checkboxState) {
 | |
|         this.checkbox.checked = this.checkboxState.checked;
 | |
|         this.checkbox.setAttribute("label", this.checkboxState.label);
 | |
|         this.checkbox.hidden = false;
 | |
|       } else {
 | |
|         this.checkbox.hidden = true;
 | |
|         // Reset checked state to avoid wrong using of previous value.
 | |
|         this.checkbox.checked = false;
 | |
|       }
 | |
| 
 | |
|       this.hidden = false;
 | |
|     }
 | |
| 
 | |
|     static get markup() {
 | |
|       return `
 | |
|       <hbox class="popup-notification-header-container"></hbox>
 | |
|       <hbox align="start" class="popup-notification-body-container">
 | |
|         <image class="popup-notification-icon"/>
 | |
|         <vbox flex="1" pack="start" class="popup-notification-body">
 | |
|           <hbox align="start">
 | |
|             <vbox flex="1">
 | |
|               <label class="popup-notification-origin header" crop="center"></label>
 | |
|               <!-- These need to be on the same line to avoid creating
 | |
|                   whitespace between them (whitespace is added in the
 | |
|                   localization file, if necessary). -->
 | |
|               <description class="popup-notification-description"><html:span></html:span><html:b></html:b><html:span></html:span><html:b></html:b><html:span></html:span></description>
 | |
|               <description class="popup-notification-hint-text"></description>
 | |
|             </vbox>
 | |
|             <toolbarbutton class="messageCloseButton close-icon popup-notification-closebutton tabbable" tooltiptext="&closeNotification.tooltip;"></toolbarbutton>
 | |
|           </hbox>
 | |
|           <label class="popup-notification-learnmore-link" is="text-link">&learnMoreNoEllipsis;</label>
 | |
|           <checkbox class="popup-notification-checkbox" oncommand="PopupNotifications._onCheckboxCommand(event)"></checkbox>
 | |
|           <description class="popup-notification-warning"></description>
 | |
|         </vbox>
 | |
|       </hbox>
 | |
|       <hbox class="popup-notification-footer-container"></hbox>
 | |
|       <hbox class="popup-notification-button-container panel-footer">
 | |
|         <button class="popup-notification-button popup-notification-secondary-button"></button>
 | |
|         <toolbarseparator></toolbarseparator>
 | |
|         <button type="menu" class="popup-notification-button popup-notification-dropmarker" aria-label="&moreActionsButton.accessibleLabel;">
 | |
|           <menupopup position="after_end" aria-label="&moreActionsButton.accessibleLabel;">
 | |
|           </menupopup>
 | |
|         </button>
 | |
|         <button class="popup-notification-button popup-notification-primary-button" label="&defaultButton.label;" accesskey="&defaultButton.accesskey;"></button>
 | |
|       </hbox>
 | |
|       `;
 | |
|     }
 | |
| 
 | |
|     static get entities() {
 | |
|       return ["chrome://global/locale/notification.dtd"];
 | |
|     }
 | |
| 
 | |
|     slotContents() {
 | |
|       if (this._hasSlotted) {
 | |
|         return;
 | |
|       }
 | |
|       this._hasSlotted = true;
 | |
|       this.appendChild(this.constructor.fragment);
 | |
| 
 | |
|       this.button = this.querySelector(".popup-notification-primary-button");
 | |
|       this.secondaryButton = this.querySelector(
 | |
|         ".popup-notification-secondary-button"
 | |
|       );
 | |
|       this.checkbox = this.querySelector(".popup-notification-checkbox");
 | |
|       this.closebutton = this.querySelector(".popup-notification-closebutton");
 | |
|       this.menubutton = this.querySelector(".popup-notification-dropmarker");
 | |
|       this.menupopup = this.menubutton.querySelector("menupopup");
 | |
| 
 | |
|       let popupnotificationfooter = this.querySelector(
 | |
|         "popupnotificationfooter"
 | |
|       );
 | |
|       if (popupnotificationfooter) {
 | |
|         this.querySelector(".popup-notification-footer-container").append(
 | |
|           popupnotificationfooter
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       let popupnotificationheader = this.querySelector(
 | |
|         "popupnotificationheader"
 | |
|       );
 | |
|       if (popupnotificationheader) {
 | |
|         this.querySelector(".popup-notification-header-container").append(
 | |
|           popupnotificationheader
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       for (let popupnotificationcontent of this.querySelectorAll(
 | |
|         "popupnotificationcontent"
 | |
|       )) {
 | |
|         this.appendNotificationContent(popupnotificationcontent);
 | |
|       }
 | |
| 
 | |
|       this.initializeAttributeInheritance();
 | |
|     }
 | |
| 
 | |
|     appendNotificationContent(el) {
 | |
|       let nextSibling = this.querySelector(
 | |
|         ".popup-notification-body > .popup-notification-learnmore-link"
 | |
|       );
 | |
|       nextSibling.before(el);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   customElements.define("popupnotification", MozPopupNotification);
 | |
| }
 |