forked from mirrors/gecko-dev
		
	 166d8573cb
			
		
	
	
		166d8573cb
		
	
	
	
	
		
			
			Depends on D167518 Differential Revision: https://phabricator.services.mozilla.com/D167519
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.4 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";
 | |
| 
 | |
| let AboutWindowsMessages = null;
 | |
| 
 | |
| function refreshMessages() {
 | |
|   let windowMessages = {};
 | |
|   let windowTitles = {};
 | |
|   AboutWindowsMessages.getMessages(window, windowMessages, windowTitles);
 | |
|   let windowsDiv = document.getElementById("windows-div");
 | |
|   windowsDiv.innerHTML = "";
 | |
|   const templateCard = document.querySelector("template[name=window-card]");
 | |
|   for (let i = 0; i < windowTitles.value.length; ++i) {
 | |
|     let windowCard = templateCard.content
 | |
|       .cloneNode(true)
 | |
|       .querySelector("details");
 | |
|     // open the current window by default
 | |
|     windowCard.open = i === 0;
 | |
|     let summary = windowCard.querySelector("summary");
 | |
|     let titleSpan = summary.querySelector("h3.window-card-title");
 | |
|     titleSpan.appendChild(document.createTextNode(windowTitles.value[i]));
 | |
|     titleSpan.classList.toggle("current-window", windowCard.open);
 | |
|     let copyButton = summary.querySelector("button");
 | |
|     copyButton.addEventListener("click", async e => {
 | |
|       e.target.disabled = true;
 | |
|       await copyMessagesToClipboard(e);
 | |
|       e.target.disabled = false;
 | |
|     });
 | |
|     let innerUl = document.createElement("ul");
 | |
|     for (let j = 0; j < windowMessages.value[i].length; ++j) {
 | |
|       let innerLi = document.createElement("li");
 | |
|       innerLi.className = "message";
 | |
|       innerLi.innerText = windowMessages.value[i][j];
 | |
|       innerUl.appendChild(innerLi);
 | |
|     }
 | |
|     windowCard.appendChild(innerUl);
 | |
|     windowsDiv.append(windowCard);
 | |
|   }
 | |
| }
 | |
| 
 | |
| async function copyMessagesToClipboard(event) {
 | |
|   const details = event.target.parentElement.parentElement;
 | |
|   // Avoid copying the window name as it is Category 3 data,
 | |
|   // and only useful for the user to identify which window
 | |
|   // is which.
 | |
|   const messagesText =
 | |
|     Array.from(details.querySelector("ul").children)
 | |
|       .map(li => li.innerText)
 | |
|       .join("\n") + "\n";
 | |
| 
 | |
|   await navigator.clipboard.writeText(messagesText);
 | |
| }
 | |
| 
 | |
| function onLoad() {
 | |
|   refreshMessages();
 | |
| }
 | |
| 
 | |
| try {
 | |
|   AboutWindowsMessages = Cc["@mozilla.org/about-windowsmessages;1"].getService(
 | |
|     Ci.nsIAboutWindowsMessages
 | |
|   );
 | |
|   document.addEventListener("DOMContentLoaded", onLoad, { once: true });
 | |
| } catch (ex) {
 | |
|   // Do nothing if we fail to create a singleton instance,
 | |
|   // showing the default no-module message.
 | |
|   console.error(ex);
 | |
| }
 |