@@ -136,6 +136,14 @@ class AutofillInspector {
136136 #originFieldNameByInspectId = new Map ( ) ;
137137 #hasEverEdited = false ;
138138
139+ #settings = {
140+ // Setting to control whether we scroll the view to the hovered field.
141+ scrollHover : false ,
142+
143+ // Setting to control whether we include iframe when downloading the web page.
144+ includeIframe : true ,
145+ } ;
146+
139147 /**
140148 * Array contains the list of all inspected elements. This value
141149 * is set after calling `inspect` experiment API.
@@ -164,6 +172,17 @@ class AutofillInspector {
164172 [ "autofill-add-credit-card-button" , ( ) => this . onAddOrRemoveTestRecord ( ) ] ,
165173 ] ;
166174
175+ #menuItemClickHandlers = [
176+ [
177+ "menuitem-scroll-hover" ,
178+ ( event ) => this . onSelectScrollWhenHover ( event . target ) ,
179+ ] ,
180+ [
181+ "menuitem-download-iframe" ,
182+ ( event ) => this . onSelectIncludeIframeWhenDownload ( event . target ) ,
183+ ] ,
184+ ] ;
185+
167186 /**
168187 * Array of <th> configuration of the header of inspect result table.
169188 */
@@ -189,16 +208,19 @@ class AutofillInspector {
189208
190209 init ( ) {
191210 // Helper to attach event listeners
192- const addEventListeners = ( handlers , eventType ) => {
211+ const addEventListeners = ( root , handlers , eventType ) => {
193212 for ( const [ id , handler ] of handlers ) {
194- const element = document . getElementById ( id ) ;
195- element . addEventListener ( eventType , ( event ) => handler ( event ) ) ;
213+ const element = root . getElementById ( id ) ;
214+ element ? .addEventListener ( eventType , ( event ) => handler ( event ) ) ;
196215 }
197216 } ;
198217
199218 // Setup toolbar button and checkbox change handlers
200- addEventListeners ( this . #buttonClickHandlers, "click" ) ;
201- addEventListeners ( this . #checkboxChangeHandlers, "change" ) ;
219+ addEventListeners ( document , this . #buttonClickHandlers, "click" ) ;
220+ addEventListeners ( document , this . #checkboxChangeHandlers, "change" ) ;
221+
222+ const setting = document . getElementById ( "autofill-setting-button" ) ;
223+ addEventListeners ( setting . shadowRoot , this . #menuItemClickHandlers, "click" ) ;
202224
203225 // Setup inspect result table
204226 const headerRow = document . getElementById ( "form-analysis-head-row" ) ;
@@ -213,6 +235,17 @@ class AutofillInspector {
213235 return th ;
214236 } ) ,
215237 ) ;
238+
239+ this . initSettingMenuItems ( ) ;
240+ }
241+
242+ initSettingMenuItems ( ) {
243+ const setting = document . getElementById ( "autofill-setting-button" ) ;
244+
245+ let element = setting . shadowRoot . getElementById ( "menuitem-scroll-hover" ) ;
246+ this . onSelectScrollWhenHover ( element , true ) ;
247+ element = setting . shadowRoot . getElementById ( "menuitem-download-iframe" ) ;
248+ this . onSelectIncludeIframeWhenDownload ( element , true ) ;
216249 }
217250
218251 /**
@@ -299,7 +332,10 @@ class AutofillInspector {
299332 this . #updateProgress( "downloading page" ) ;
300333 await this . waitForInspect ( ) ;
301334
302- sendMessage ( "download-page" , { fieldDetails : this . #inspectedFieldDetails } ) ;
335+ sendMessage ( "download-page" , {
336+ fieldDetails : this . #inspectedFieldDetails,
337+ includeIframe : this . #settings. includeIframe ,
338+ } ) ;
303339 }
304340
305341 async onGenerateReport ( ) {
@@ -310,6 +346,7 @@ class AutofillInspector {
310346 sendMessage ( "generate-report" , {
311347 panelDataUrl,
312348 fieldDetails : this . #inspectedFieldDetails,
349+ includeIframe : this . #settings. includeIframe ,
313350 } ) ;
314351 }
315352
@@ -366,6 +403,28 @@ class AutofillInspector {
366403 event . target . classList . toggle ( "editing" ) ;
367404 }
368405
406+ onSelectScrollWhenHover ( target , init = false ) {
407+ if ( ! init ) {
408+ this . #settings. scrollHover = ! this . #settings. scrollHover ;
409+ }
410+ if ( this . #settings. scrollHover ) {
411+ target . classList . add ( "menuitem-selected" ) ;
412+ } else {
413+ target . classList . remove ( "menuitem-selected" ) ;
414+ }
415+ }
416+
417+ onSelectIncludeIframeWhenDownload ( target , init = false ) {
418+ if ( ! init ) {
419+ this . #settings. includeIframe = ! this . #settings. includeIframe ;
420+ }
421+ if ( this . #settings. includeIframe ) {
422+ target . classList . add ( "menuitem-selected" ) ;
423+ } else {
424+ target . classList . remove ( "menuitem-selected" ) ;
425+ }
426+ }
427+
369428 onFilterFields ( ) {
370429 this . #updateFieldsInfo( this . #inspectedFieldDetails) ;
371430 }
@@ -415,7 +474,9 @@ class AutofillInspector {
415474 }
416475
417476 #scrollIntoView( fieldDetail ) {
418- sendMessage ( "scroll-to" , { fieldDetail } ) ;
477+ if ( this . #settings. scrollHover ) {
478+ sendMessage ( "scroll-to" , { fieldDetail } ) ;
479+ }
419480 }
420481
421482 #addHighlightOverlay( type , fieldDetails ) {
0 commit comments