From 8d44a7fca061cb38418986c8f88d6ff0771bfbd3 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 3 Oct 2019 14:05:57 +0000 Subject: [PATCH] Bug 1495727 - Update Debugger Frontend v92. r=dwalsh UltraBlame original commit: 0fd47bc8f7c2758ce9b9d47e860054be0b2260a5 --- devtools/client/debugger/new/README.mozilla | 6 +- .../client/debugger/new/dist/debugger.css | 2 +- .../client/debugger/new/dist/parser-worker.js | 55 +- .../client/debugger/new/dist/search-worker.js | 2564 ++++++++++++++--- .../new/src/components/Editor/index.js | 36 - .../PrimaryPanes/SourcesTreeItem.js | 40 +- .../debugger/new/src/reducers/sources.js | 34 + .../client/debugger/new/src/utils/prefs.js | 18 +- .../test/mochitest/browser_dbg-quick-open.js | 114 + 9 files changed, 2417 insertions(+), 452 deletions(-) diff --git a/devtools/client/debugger/new/README.mozilla b/devtools/client/debugger/new/README.mozilla index d40b05a68af5b..aa1e15887f0f7 100644 --- a/devtools/client/debugger/new/README.mozilla +++ b/devtools/client/debugger/new/README.mozilla @@ -24,7 +24,7 @@ debugger . html Version -91 +92 Comparison : https @@ -47,13 +47,13 @@ compare / release - -90 +91 . . . release - -91 +92 Packages : - diff --git a/devtools/client/debugger/new/dist/debugger.css b/devtools/client/debugger/new/dist/debugger.css index 864a60da17ccb..c910a6e8bfb01 100644 --- a/devtools/client/debugger/new/dist/debugger.css +++ b/devtools/client/debugger/new/dist/debugger.css @@ -21512,7 +21512,7 @@ font - weight : -lighter +normal ; display : diff --git a/devtools/client/debugger/new/dist/parser-worker.js b/devtools/client/debugger/new/dist/parser-worker.js index 123c0f4de0afc..651fe088f97de 100644 --- a/devtools/client/debugger/new/dist/parser-worker.js +++ b/devtools/client/debugger/new/dist/parser-worker.js @@ -10827,7 +10827,6 @@ arguments ; if ( -! t . isMemberExpression @@ -10838,6 +10837,60 @@ callee { const { +property +: +{ +name +loc +} +} += +callee +; +symbols +. +callExpressions +. +push +( +{ +name +: +name +values +: +args +. +filter +( +arg += +> +arg +. +value +) +. +map +( +arg += +> +arg +. +value +) +location +: +loc +} +) +; +} +else +{ +const +{ start end identifierName diff --git a/devtools/client/debugger/new/dist/search-worker.js b/devtools/client/debugger/new/dist/search-worker.js index 168d8dea37138..52c87ec473265 100644 --- a/devtools/client/debugger/new/dist/search-worker.js +++ b/devtools/client/debugger/new/dist/search-worker.js @@ -33,6 +33,16 @@ exports = factory ( +require +( +" +devtools +/ +shared +/ +flags +" +) ) ; else @@ -55,6 +65,13 @@ amd define ( [ +" +devtools +/ +shared +/ +flags +" ] factory ) @@ -64,8 +81,41 @@ else var a = +typeof +exports += += += +' +object +' +? +factory +( +require +( +" +devtools +/ +shared +/ +flags +" +) +) +: factory ( +root +[ +" +devtools +/ +shared +/ +flags +" +] ) ; for @@ -116,6 +166,7 @@ self this function ( +__WEBPACK_EXTERNAL_MODULE_52__ ) { return @@ -2161,7 +2212,7 @@ arrayMap * * / -1284 +120 : / * @@ -2173,140 +2224,1481 @@ function ( module exports -__webpack_require__ ) { +/ +/ +shim +for +using +process +in +browser +var +process += module . exports = -__webpack_require__ -( -1631 -) +{ +} ; / -* -* -* -/ -} -) / -* -* -* +cached +from +whatever +global +is +present +so +that +test +runners +that +stub +it / -14 -: / -* -* -* +don +' +t +break +things +. +But +we +need +to +wrap +it +in +a +try +catch +in +case +it +is / -( -function -( -module -exports -) -{ / -* -* -* -Checks -if -value -is -object -- -like +wrapped +in +strict +mode +code +which +doesn +' +t +define +any +globals . -A -value -is -object -- -like -if -it +It ' s -not -null -* -and -has +inside a -typeof -result -of -" -object -" -. -* -* -static -* -memberOf -_ -* -since -4 -. -0 +/ +/ +function +because +try +/ +catches +deoptimize +in +certain +engines . -0 -* -category -Lang -* -param +var +cachedSetTimeout +; +var +cachedClearTimeout +; +function +defaultSetTimout +( +) { -* +throw +new +Error +( +' +setTimeout +has +not +been +defined +' +) +; } -value -The -value -to -check -. -* -returns +function +defaultClearTimeout +( +) { -boolean +throw +new +Error +( +' +clearTimeout +has +not +been +defined +' +) +; } -Returns -true +( +function +( +) +{ +try +{ if -value -is -object -- -like -else -false -. -* -example -* -* -_ -. -isObjectLike ( +typeof +setTimeout += += += +' +function +' +) +{ +cachedSetTimeout += +setTimeout +; +} +else { +cachedSetTimeout += +defaultSetTimout +; +} } +catch +( +e ) -; -* -/ -/ +{ +cachedSetTimeout = -> -true +defaultSetTimout +; +} +try +{ +if +( +typeof +clearTimeout += += += +' +function +' +) +{ +cachedClearTimeout += +clearTimeout +; +} +else +{ +cachedClearTimeout += +defaultClearTimeout +; +} +} +catch +( +e +) +{ +cachedClearTimeout += +defaultClearTimeout +; +} +} +( +) +) +function +runTimeout +( +fun +) +{ +if +( +cachedSetTimeout += += += +setTimeout +) +{ +/ +/ +normal +enviroments +in +sane +situations +return +setTimeout +( +fun +0 +) +; +} +/ +/ +if +setTimeout +wasn +' +t +available +but +was +latter +defined +if +( +( +cachedSetTimeout += += += +defaultSetTimout +| +| +! +cachedSetTimeout +) +& +& +setTimeout +) +{ +cachedSetTimeout += +setTimeout +; +return +setTimeout +( +fun +0 +) +; +} +try +{ +/ +/ +when +when +somebody +has +screwed +with +setTimeout +but +no +I +. +E +. +maddness +return +cachedSetTimeout +( +fun +0 +) +; +} +catch +( +e +) +{ +try +{ +/ +/ +When +we +are +in +I +. +E +. +but +the +script +has +been +evaled +so +I +. +E +. +doesn +' +t +trust +the +global +object +when +called +normally +return +cachedSetTimeout +. +call +( +null +fun +0 +) +; +} +catch +( +e +) +{ +/ +/ +same +as +above +but +when +it +' +s +a +version +of +I +. +E +. +that +must +have +the +global +object +for +' +this +' +hopfully +our +context +correct +otherwise +it +will +throw +a +global +error +return +cachedSetTimeout +. +call +( +this +fun +0 +) +; +} +} +} +function +runClearTimeout +( +marker +) +{ +if +( +cachedClearTimeout += += += +clearTimeout +) +{ +/ +/ +normal +enviroments +in +sane +situations +return +clearTimeout +( +marker +) +; +} +/ +/ +if +clearTimeout +wasn +' +t +available +but +was +latter +defined +if +( +( +cachedClearTimeout += += += +defaultClearTimeout +| +| +! +cachedClearTimeout +) +& +& +clearTimeout +) +{ +cachedClearTimeout += +clearTimeout +; +return +clearTimeout +( +marker +) +; +} +try +{ +/ +/ +when +when +somebody +has +screwed +with +setTimeout +but +no +I +. +E +. +maddness +return +cachedClearTimeout +( +marker +) +; +} +catch +( +e +) +{ +try +{ +/ +/ +When +we +are +in +I +. +E +. +but +the +script +has +been +evaled +so +I +. +E +. +doesn +' +t +trust +the +global +object +when +called +normally +return +cachedClearTimeout +. +call +( +null +marker +) +; +} +catch +( +e +) +{ +/ +/ +same +as +above +but +when +it +' +s +a +version +of +I +. +E +. +that +must +have +the +global +object +for +' +this +' +hopfully +our +context +correct +otherwise +it +will +throw +a +global +error +. +/ +/ +Some +versions +of +I +. +E +. +have +different +rules +for +clearTimeout +vs +setTimeout +return +cachedClearTimeout +. +call +( +this +marker +) +; +} +} +} +var +queue += +[ +] +; +var +draining += +false +; +var +currentQueue +; +var +queueIndex += +- +1 +; +function +cleanUpNextTick +( +) +{ +if +( +! +draining +| +| +! +currentQueue +) +{ +return +; +} +draining += +false +; +if +( +currentQueue +. +length +) +{ +queue += +currentQueue +. +concat +( +queue +) +; +} +else +{ +queueIndex += +- +1 +; +} +if +( +queue +. +length +) +{ +drainQueue +( +) +; +} +} +function +drainQueue +( +) +{ +if +( +draining +) +{ +return +; +} +var +timeout += +runTimeout +( +cleanUpNextTick +) +; +draining += +true +; +var +len += +queue +. +length +; +while +( +len +) +{ +currentQueue += +queue +; +queue += +[ +] +; +while +( ++ ++ +queueIndex +< +len +) +{ +if +( +currentQueue +) +{ +currentQueue +[ +queueIndex +] +. +run +( +) +; +} +} +queueIndex += +- +1 +; +len += +queue +. +length +; +} +currentQueue += +null +; +draining += +false +; +runClearTimeout +( +timeout +) +; +} +process +. +nextTick += +function +( +fun +) +{ +var +args += +new +Array +( +arguments +. +length +- +1 +) +; +if +( +arguments +. +length +> +1 +) +{ +for +( +var +i += +1 +; +i +< +arguments +. +length +; +i ++ ++ +) +{ +args +[ +i +- +1 +] += +arguments +[ +i +] +; +} +} +queue +. +push +( +new +Item +( +fun +args +) +) +; +if +( +queue +. +length += += += +1 +& +& +! +draining +) +{ +runTimeout +( +drainQueue +) +; +} +} +; +/ +/ +v8 +likes +predictible +objects +function +Item +( +fun +array +) +{ +this +. +fun += +fun +; +this +. +array += +array +; +} +Item +. +prototype +. +run += +function +( +) +{ +this +. +fun +. +apply +( +null +this +. +array +) +; +} +; +process +. +title += +' +browser +' +; +process +. +browser += +true +; +process +. +env += +{ +} +; +process +. +argv += +[ +] +; +process +. +version += +' +' +; +/ +/ +empty +string +to +avoid +regexp +issues +process +. +versions += +{ +} +; +function +noop +( +) +{ +} +process +. +on += +noop +; +process +. +addListener += +noop +; +process +. +once += +noop +; +process +. +off += +noop +; +process +. +removeListener += +noop +; +process +. +removeAllListeners += +noop +; +process +. +emit += +noop +; +process +. +prependListener += +noop +; +process +. +prependOnceListener += +noop +; +process +. +listeners += +function +( +name +) +{ +return +[ +] +} +process +. +binding += +function +( +name +) +{ +throw +new +Error +( +' +process +. +binding +is +not +supported +' +) +; +} +; +process +. +cwd += +function +( +) +{ +return +' +/ +' +} +; +process +. +chdir += +function +( +dir +) +{ +throw +new +Error +( +' +process +. +chdir +is +not +supported +' +) +; +} +; +process +. +umask += +function +( +) +{ +return +0 +; +} +; +/ +* +* +* +/ +} +) +/ +* +* +* +/ +1284 +: +/ +* +* +* +/ +( +function +( +module +exports +__webpack_require__ +) +{ +module +. +exports += +__webpack_require__ +( +1631 +) +; +/ +* +* +* +/ +} +) +/ +* +* +* +/ +1384 +: +/ +* +* +* +/ +( +function +( +module +exports +__webpack_require__ +) +{ +" +use +strict +" +; +Object +. +defineProperty +( +exports +" +__esModule +" +{ +value +: +true +} +) +; +exports +. +default += +assert +; +var +_devtoolsEnvironment += +__webpack_require__ +( +3721 +) +; +function +assert +( +condition +message +) +{ +if +( +( +0 +_devtoolsEnvironment +. +isDevelopment +) +( +) +& +& +! +condition +) +{ +throw +new +Error +( +Assertion +failure +: +{ +message +} +) +; +} +} +/ +* +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 +/ +> +. +* +/ +/ +* +* +* +/ +} +) +/ +* +* +* +/ +14 +: +/ +* +* +* +/ +( +function +( +module +exports +) +{ +/ +* +* +* +Checks +if +value +is +object +- +like +. +A +value +is +object +- +like +if +it +' +s +not +null +* +and +has +a +typeof +result +of +" +object +" +. +* +* +static +* +memberOf +_ +* +since +4 +. +0 +. +0 +* +category +Lang +* +param +{ +* +} +value +The +value +to +check +. +* +returns +{ +boolean +} +Returns +true +if +value +is +object +- +like +else +false +. +* +example +* +* +_ +. +isObjectLike +( +{ +} +) +; +* +/ +/ += +> +true * * _ @@ -2618,6 +4010,22 @@ default getMatches ; var +_assert += +__webpack_require__ +( +1384 +) +; +var +_assert2 += +_interopRequireDefault +( +_assert +) +; +var _buildQuery = __webpack_require__ @@ -2656,6 +4064,66 @@ obj } ; } +/ +* +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 +/ +> +. +* +/ function getMatches ( @@ -2765,25 +4233,113 @@ line ! = = -null +null +) +{ +matchedLocations +. +push +( +{ +line +: +i +ch +: +singleMatch +. +index +} +) +; +/ +/ +When +the +match +is +an +empty +string +the +regexQuery +. +lastIndex +will +not +/ +/ +change +resulting +in +an +infinite +loop +so +we +need +to +check +for +this +and +/ +/ +increment +it +manually +in +that +case +. +See +issue +# +7023 +if +( +singleMatch +[ +0 +] += += += +" +" ) { -matchedLocations +( +0 +_assert2 . -push +default +) ( -{ -line -: -i -ch -: -singleMatch +! +regexQuery . -index -} +unicode +" +lastIndex ++ ++ +can +cause +issues +in +unicode +mode +" ) ; +regexQuery +. +lastIndex ++ ++ +; +} } } return @@ -2792,66 +4348,6 @@ matchedLocations } / * -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 -/ -> -. -* -/ -/ -* * * / @@ -4629,85 +6125,264 @@ _asyncToGenerator function * ( -id -tasks +id +tasks +) +{ +let +isWorking += +true +; +const +timeoutId += +setTimeout +( +function +( +) +{ +isWorking += +false +; +} +timeout +) +; +const +results += +[ +] +; +while +( +tasks +. +length +! += += +0 +& +& +isWorking +) +{ +const +{ +callback +context +args +} += +tasks +. +shift +( +) +; +const +result += +yield +callback +. +call +( +context +args +) +; +results +. +push +( +result +) +; +} +worker +. +postMessage +( +{ +id +status +: +" +pending +" +data +: +results +} +) +; +clearTimeout +( +timeoutId +) +; +if +( +tasks +. +length +! += += +0 +) +{ +yield +streamingWorker +( +id +tasks +) +; +} +} +) +; +return +function +streamingWorker +( +_x +_x2 +) +{ +return +_ref +. +apply +( +this +arguments +) +; +} +; +} +) +( +) +; +return +( +( +) += +> +{ +var +_ref2 += +_asyncToGenerator +( +function +* +( +msg ) { -let -isWorking -= -true -; const -timeoutId -= -setTimeout -( -function -( -) { -isWorking -= -false -; +id +method +args } -timeout -) += +msg +. +data ; const -results +workerMethod = +publicInterface [ +method ] ; -while +if ( -tasks -. -length ! -= -= -0 -& -& -isWorking +workerMethod ) { -const +console +. +error +( +Could +not +find { -callback -context -args +method } -= -tasks +defined +in +worker . -shift +) +; +} +worker +. +postMessage ( +{ +id +status +: +" +start +" +} ) ; +try +{ const -result +tasks = -yield -callback -. -call +workerMethod ( -context args ) ; -results +yield +streamingWorker +( +id +tasks +) +; +worker . -push +postMessage ( -result +{ +id +status +: +" +done +" +} ) ; } +catch +( +error +) +{ worker . postMessage @@ -4717,215 +6392,313 @@ id status : " -pending +error " -data -: -results +error } ) ; -clearTimeout +} +} +) +; +return +function ( -timeoutId +_x3 +) +{ +return +_ref2 +. +apply +( +this +arguments ) ; -if +} +; +} +) ( -tasks +) +; +} +module . -length -! +exports = +{ +WorkerDispatcher +workerHandler +streamingWorkerHandler +} +; +/ +* +* +* +/ +} +) +/ +* +* +* +/ +3721 +: +/ +* +* +* +/ +( +function +( +module +exports +__webpack_require__ +) +{ +" +use +strict +" +; +/ +* +WEBPACK +VAR +INJECTION +* +/ +( +function +( +process +) +{ +/ +* +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 +/ +> +. +* +/ +const +flag = -0 -) -{ -yield -streamingWorker +__webpack_require__ ( -id -tasks -) -; -} -} +52 ) ; -return function -streamingWorker +isBrowser ( -_x -_x2 ) { return -_ref -. -apply -( -this -arguments -) -; -} +typeof +window += += +" +object +" ; } -) +function +isNode ( ) -; +{ return -( -( -) +process +& +& +process +. +release +& +& +process +. +release +. +name = -> -{ -var -_ref2 = -_asyncToGenerator -( +' +node +' +; +} function -* +isDevelopment ( -msg ) { -const -{ -id -method -args -} -= -msg -. -data -; -const -workerMethod -= -publicInterface -[ -method -] -; if ( ! -workerMethod +isNode +( ) -{ -console -. -error +& +& +isBrowser ( -Could -not -find +) +) { -method -} -defined -in -worker +const +href += +window . -) -; -} -worker +location +? +window . -postMessage -( -{ -id -status +location +. +href : " -start " -} -) -; -try -{ -const -tasks -= -workerMethod -( -args -) ; -yield -streamingWorker +return +href +. +match ( -id -tasks +/ +^ +file +: +/ ) -; -worker +| +| +href . -postMessage +match ( -{ -id -status +/ +localhost : +/ +) +; +} +return " -done +production +" +! += +" +production " -} -) ; } -catch +function +isTesting ( -error ) { -worker +return +flag . -postMessage -( -{ -id -status -: -" -error -" -error -} -) +testing ; } -} -) -; -return function +isFirefoxPanel ( -_x3 ) { return -_ref2 -. -apply +! +isDevelopment ( -this -arguments ) ; } -; -} +function +isFirefox +( ) +{ +return +( +/ +firefox +/ +i +. +test ( +navigator +. +userAgent +) ) ; } @@ -4934,13 +6707,32 @@ module exports = { -WorkerDispatcher -workerHandler -streamingWorkerHandler +isDevelopment +isTesting +isFirefoxPanel +isFirefox } ; / * +WEBPACK +VAR +INJECTION +* +/ +} +. +call +( +exports +__webpack_require__ +( +120 +) +) +) +/ +* * * / @@ -5378,6 +7170,38 @@ query * * / +52 +: +/ +* +* +* +/ +( +function +( +module +exports +) +{ +module +. +exports += +__WEBPACK_EXTERNAL_MODULE_52__ +; +/ +* +* +* +/ +} +) +/ +* +* +* +/ 6 : / diff --git a/devtools/client/debugger/new/src/components/Editor/index.js b/devtools/client/debugger/new/src/components/Editor/index.js index 8191d496159b5..d3c801694a303 100644 --- a/devtools/client/debugger/new/src/components/Editor/index.js +++ b/devtools/client/debugger/new/src/components/Editor/index.js @@ -1310,15 +1310,6 @@ editor return ; } -( -0 -_editor -. -startOperation -) -( -) -; this . setText @@ -1340,15 +1331,6 @@ scrollToLocation nextProps ) ; -( -0 -_editor -. -endOperation -) -( -) -; } setupEditor ( @@ -2075,15 +2057,6 @@ selectedSource } else { -( -0 -_editor -. -startOperation -) -( -) -; this . setText @@ -2102,15 +2075,6 @@ this props ) ; -( -0 -_editor -. -endOperation -) -( -) -; } } } diff --git a/devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTreeItem.js b/devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTreeItem.js index f41a5f1557f5c..df3aa6a1368cb 100644 --- a/devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTreeItem.js +++ b/devtools/client/debugger/new/src/components/PrimaryPanes/SourcesTreeItem.js @@ -1366,48 +1366,40 @@ if ( ! source +| +| +! +_devtoolsSourceMap +. +isOriginalId +( +source +. +id +) ) { return false ; } -const -sources -= +return +! +! ( 0 _selectors . -getSourcesByURL +getSourceByURL ) ( state source . url +false ) ; -return -( -0 -_devtoolsSourceMap -. -isOriginalId -) -( -source -. -id -) -& -& -sources -. -length -> -1 -; } const mapStateToProps diff --git a/devtools/client/debugger/new/src/reducers/sources.js b/devtools/client/debugger/new/src/reducers/sources.js index 020644de36a2e..3cd597a5959b0 100644 --- a/devtools/client/debugger/new/src/reducers/sources.js +++ b/devtools/client/debugger/new/src/reducers/sources.js @@ -70,6 +70,12 @@ getSourceByURL ; exports . +getSourcesByURLs += +getSourcesByURLs +; +exports +. getSourcesByURL = getSourcesByURL @@ -1522,6 +1528,34 @@ url ; } function +getSourcesByURLs +( +state +urls +) +{ +return +urls +. +map +( +url += +> +getSourceByURL +( +state +url +) +) +. +filter +( +Boolean +) +; +} +function getSourcesByURL ( state diff --git a/devtools/client/debugger/new/src/utils/prefs.js b/devtools/client/debugger/new/src/utils/prefs.js index 07fcf861e20dc..3668aba675a78 100644 --- a/devtools/client/debugger/new/src/utils/prefs.js +++ b/devtools/client/debugger/new/src/utils/prefs.js @@ -738,22 +738,6 @@ debugger . features . -column -- -breakpoints -" -false -) -; -pref -( -" -devtools -. -debugger -. -features -. map - scopes @@ -856,7 +840,7 @@ column - breakpoints " -true +false ) ; pref diff --git a/devtools/client/debugger/new/test/mochitest/browser_dbg-quick-open.js b/devtools/client/debugger/new/test/mochitest/browser_dbg-quick-open.js index 7ea9a3390d4f6..e5c1c3e787004 100644 --- a/devtools/client/debugger/new/test/mochitest/browser_dbg-quick-open.js +++ b/devtools/client/debugger/new/test/mochitest/browser_dbg-quick-open.js @@ -273,6 +273,85 @@ query ) ; } +function +findResultEl +( +dbg +index += +1 +) +{ +return +waitForElementWithSelector +( +dbg +. +result +- +item +: +nth +- +child +( +{ +index +} +) +) +; +} +async +function +assertResultIsTab +( +dbg +index +) +{ +const +el += +await +findResultEl +( +dbg +index +) +; +ok +( +el +& +& +! +! +el +. +querySelector +( +' +. +tab +. +result +- +item +- +icon +' +) +' +Result +should +be +a +tab +' +) +; +} / / Testing @@ -448,6 +527,41 @@ switching info ( " +Test +that +results +show +tab +icons +" +) +; +quickOpen +( +dbg +" +sw1 +" +) +; +await +assertResultIsTab +( +dbg +1 +) +; +pressKey +( +dbg +" +Tab +" +) +; +info +( +" Testing arrow keys