@@ -9,6 +9,8 @@ const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
99// eslint-disable-next-line no-var
1010var displayReceivedHeader = class extends ExtensionCommon . ExtensionAPI {
1111 getAPI ( context ) {
12+ const [ majorVersion ] = Services . appinfo . platformVersion . split ( "." , 1 ) ;
13+
1214 function getDocumentByTabId ( tabId ) {
1315 const { ExtensionParent} = ChromeUtils . import ( "resource://gre/modules/ExtensionParent.jsm" ) ;
1416 const target = ExtensionParent . apiManager . global . tabTracker . getTab ( tabId ) ;
@@ -22,37 +24,61 @@ var displayReceivedHeader = class extends ExtensionCommon.ExtensionAPI {
2224 addHeadersToWindowById ( windowId ) {
2325 const window = Services . wm . getOuterWindowWithId ( windowId ) ;
2426 const { document} = window ;
25- const expandedHeaders2 = document . getElementById ( "expandedHeaders2" ) ;
27+ const expandedHeaders2 = document
28+ . getElementById ( majorVersion < 100 ? "expandedHeaders2" : "extraHeadersArea" ) ;
2629
2730 if ( expandedHeaders2 ) {
28- const element = document . createElement ( "tr" ) ;
31+ const element = document . createElement ( majorVersion < 100 ? "tr" : "div ") ;
2932 element . hidden = true ;
3033 element . id = "expandedReceivedRow" ;
34+ element . classList . add ( "message-header-row" ) ;
3135
32- const headerRowTitle = document . createElement ( "th" ) ;
3336 const headerRowTitleLabel = document . createXULElement ( "label" ) ;
3437 headerRowTitleLabel . id = "expandedReceivedLabel" ;
35- headerRowTitleLabel . classList . add ( "headerName" ) ;
38+ headerRowTitleLabel . classList . add ( majorVersion < 100 ? "headerName" : "message-header-label ") ;
3639 headerRowTitleLabel . value = "Received" ;
3740 headerRowTitleLabel . control = "receivedReceivedHeader" ;
38- headerRowTitle . appendChild ( headerRowTitleLabel ) ;
41+
42+ if ( majorVersion < 100 ) {
43+ const headerRowTitle = document . createElement ( "th" ) ;
44+ headerRowTitle . appendChild ( headerRowTitleLabel ) ;
45+ element . appendChild ( headerRowTitle ) ;
46+ } else {
47+ element . appendChild ( headerRowTitleLabel ) ;
48+ }
3949
4050 const headerRowValue = document . createElement ( "td" ) ;
4151 headerRowValue . id = "receivedReceivedHeader" ;
4252
43- element . appendChild ( headerRowTitle ) ;
4453 element . appendChild ( headerRowValue ) ;
4554 expandedHeaders2 . appendChild ( element ) ;
4655 } else {
4756 throw Error ( "Could not find the expandedHeaders2 element" ) ;
4857 }
4958 } ,
5059 setReceivedHeaderHidden ( tabId , hidden ) {
60+ // Ensure that the all visible labels have the same size.
61+ function syncGridColumnWidths ( document ) {
62+ const allHeaderLabels = document
63+ . querySelectorAll ( ".message-header-row:not([hidden]) .message-header-label" ) ;
64+
65+ // Clear existing style.
66+ for ( const label of allHeaderLabels ) {
67+ label . style . minWidth = null ;
68+ }
69+
70+ const minWidth = Math . max ( ...Array . from ( allHeaderLabels , ( i ) => i . clientWidth ) ) ;
71+ for ( const label of allHeaderLabels ) {
72+ label . style . minWidth = `${ minWidth } px` ;
73+ }
74+ }
75+
5176 const document = getDocumentByTabId ( tabId ) ;
5277 if ( ! document ) return ;
5378
5479 const mailHeaderfield = document . getElementById ( "expandedReceivedRow" ) ;
5580 mailHeaderfield . hidden = hidden ;
81+ if ( majorVersion >= 100 ) syncGridColumnWidths ( document ) ;
5682 } ,
5783 setReceivedHeaderValue ( tabId , headersArray ) {
5884 const document = getDocumentByTabId ( tabId ) ;
0 commit comments