browser/devtools/debugger/test/browser_dbg_search-sources-02.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 /**
     5  * Tests more complex functionality of sources filtering (file search).
     6  */
     8 const TAB_URL = EXAMPLE_URL + "doc_editor-mode.html";
    10 let gTab, gDebuggee, gPanel, gDebugger;
    11 let gSources, gSourceUtils, gSearchView, gSearchBox;
    13 function test() {
    14   // Debug test slaves are a bit slow at this test.
    15   requestLongerTimeout(3);
    17   initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => {
    18     gTab = aTab;
    19     gDebuggee = aDebuggee;
    20     gPanel = aPanel;
    21     gDebugger = gPanel.panelWin;
    22     gSources = gDebugger.DebuggerView.Sources;
    23     gSourceUtils = gDebugger.SourceUtils;
    24     gSearchView = gDebugger.DebuggerView.FilteredSources;
    25     gSearchBox = gDebugger.DebuggerView.Filtering._searchbox;
    27     waitForSourceShown(gPanel, "-01.js")
    28       .then(firstSearch)
    29       .then(secondSearch)
    30       .then(thirdSearch)
    31       .then(fourthSearch)
    32       .then(fifthSearch)
    33       .then(goDown)
    34       .then(goDownAndWrap)
    35       .then(goUpAndWrap)
    36       .then(goUp)
    37       .then(returnAndSwitch)
    38       .then(firstSearch)
    39       .then(clickAndSwitch)
    40       .then(() => closeDebuggerAndFinish(gPanel))
    41       .then(null, aError => {
    42         ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
    43       });
    44   });
    45 }
    47 function firstSearch() {
    48   let finished = promise.all([
    49     ensureSourceIs(gPanel, "-01.js"),
    50     ensureCaretAt(gPanel, 1),
    51     once(gDebugger, "popupshown"),
    52     waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND)
    53   ]);
    55   setText(gSearchBox, ".");
    57   return finished.then(() => promise.all([
    58     ensureSourceIs(gPanel, "-01.js"),
    59     ensureCaretAt(gPanel, 1),
    60     verifyContents([
    61       "code_script-switching-01.js?a=b",
    62       "code_test-editor-mode?c=d",
    63       "doc_editor-mode.html"
    64     ])
    65   ]));
    66 }
    68 function secondSearch() {
    69   let finished = promise.all([
    70     ensureSourceIs(gPanel, "-01.js"),
    71     ensureCaretAt(gPanel, 1),
    72     once(gDebugger, "popupshown"),
    73     waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND)
    74   ]);
    76   typeText(gSearchBox, "-0");
    78   return finished.then(() => promise.all([
    79     ensureSourceIs(gPanel, "-01.js"),
    80     ensureCaretAt(gPanel, 1),
    81     verifyContents(["code_script-switching-01.js?a=b"])
    82   ]));
    83 }
    85 function thirdSearch() {
    86   let finished = promise.all([
    87     ensureSourceIs(gPanel, "-01.js"),
    88     ensureCaretAt(gPanel, 1),
    89     once(gDebugger, "popupshown"),
    90     waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND)
    91   ]);
    93   backspaceText(gSearchBox, 1);
    95   return finished.then(() => promise.all([
    96     ensureSourceIs(gPanel, "-01.js"),
    97     ensureCaretAt(gPanel, 1),
    98     verifyContents([
    99       "code_script-switching-01.js?a=b",
   100       "code_test-editor-mode?c=d",
   101       "doc_editor-mode.html"
   102     ])
   103   ]));
   104 }
   106 function fourthSearch() {
   107   let finished = promise.all([
   108     ensureSourceIs(gPanel, "-01.js"),
   109     ensureCaretAt(gPanel, 1),
   110     once(gDebugger, "popupshown"),
   111     waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
   112     waitForSourceShown(gPanel, "test-editor-mode")
   113   ]);
   115   setText(gSearchBox, "code_test");
   117   return finished.then(() => promise.all([
   118     ensureSourceIs(gPanel, "test-editor-mode"),
   119     ensureCaretAt(gPanel, 1),
   120     verifyContents(["code_test-editor-mode?c=d"])
   121   ]));
   122 }
   124 function fifthSearch() {
   125   let finished = promise.all([
   126     ensureSourceIs(gPanel, "test-editor-mode"),
   127     ensureCaretAt(gPanel, 1),
   128     once(gDebugger, "popupshown"),
   129     waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
   130     waitForSourceShown(gPanel, "-01.js")
   131   ]);
   133   backspaceText(gSearchBox, 4);
   135   return finished.then(() => promise.all([
   136     ensureSourceIs(gPanel, "-01.js"),
   137     ensureCaretAt(gPanel, 1),
   138     verifyContents([
   139       "code_script-switching-01.js?a=b",
   140       "code_test-editor-mode?c=d"
   141     ])
   142   ]));
   143 }
   145 function goDown() {
   146   let finished = promise.all([
   147     ensureSourceIs(gPanel, "-01.js"),
   148     ensureCaretAt(gPanel, 1),
   149     waitForSourceShown(gPanel, "test-editor-mode"),
   150   ]);
   152   EventUtils.sendKey("DOWN", gDebugger);
   154   return finished.then(() => promise.all([
   155     ensureSourceIs(gPanel,"test-editor-mode"),
   156     ensureCaretAt(gPanel, 1),
   157     verifyContents([
   158       "code_script-switching-01.js?a=b",
   159       "code_test-editor-mode?c=d"
   160     ])
   161   ]));
   162 }
   164 function goDownAndWrap() {
   165   let finished = promise.all([
   166     ensureSourceIs(gPanel, "test-editor-mode"),
   167     ensureCaretAt(gPanel, 1),
   168     waitForSourceShown(gPanel, "-01.js")
   169   ]);
   171   EventUtils.synthesizeKey("g", { metaKey: true }, gDebugger);
   173   return finished.then(() => promise.all([
   174     ensureSourceIs(gPanel,"-01.js"),
   175     ensureCaretAt(gPanel, 1),
   176     verifyContents([
   177       "code_script-switching-01.js?a=b",
   178       "code_test-editor-mode?c=d"
   179     ])
   180   ]));
   181 }
   183 function goUpAndWrap() {
   184   let finished = promise.all([
   185     ensureSourceIs(gPanel,"-01.js"),
   186     ensureCaretAt(gPanel, 1),
   187     waitForSourceShown(gPanel, "test-editor-mode")
   188   ]);
   190   EventUtils.synthesizeKey("G", { metaKey: true }, gDebugger);
   192   return finished.then(() => promise.all([
   193     ensureSourceIs(gPanel,"test-editor-mode"),
   194     ensureCaretAt(gPanel, 1),
   195     verifyContents([
   196       "code_script-switching-01.js?a=b",
   197       "code_test-editor-mode?c=d"
   198     ])
   199   ]));
   200 }
   202 function goUp() {
   203   let finished = promise.all([
   204     ensureSourceIs(gPanel,"test-editor-mode"),
   205     ensureCaretAt(gPanel, 1),
   206     waitForSourceShown(gPanel, "-01.js"),
   207   ]);
   209   EventUtils.sendKey("UP", gDebugger);
   211   return finished.then(() => promise.all([
   212     ensureSourceIs(gPanel,"-01.js"),
   213     ensureCaretAt(gPanel, 1),
   214     verifyContents([
   215       "code_script-switching-01.js?a=b",
   216       "code_test-editor-mode?c=d"
   217     ])
   218   ]));
   219 }
   221 function returnAndSwitch() {
   222   let finished = promise.all([
   223     ensureSourceIs(gPanel,"-01.js"),
   224     ensureCaretAt(gPanel, 1),
   225     once(gDebugger, "popuphidden")
   226   ]);
   228   EventUtils.sendKey("RETURN", gDebugger);
   230   return finished.then(() => promise.all([
   231     ensureSourceIs(gPanel,"-01.js"),
   232     ensureCaretAt(gPanel, 1)
   233   ]));
   234 }
   236 function clickAndSwitch() {
   237   let finished = promise.all([
   238     ensureSourceIs(gPanel,"-01.js"),
   239     ensureCaretAt(gPanel, 1),
   240     once(gDebugger, "popuphidden"),
   241     waitForSourceShown(gPanel, "test-editor-mode")
   242   ]);
   244   EventUtils.sendMouseEvent({ type: "click" }, gSearchView.items[1].target, gDebugger);
   246   return finished.then(() => promise.all([
   247     ensureSourceIs(gPanel,"test-editor-mode"),
   248     ensureCaretAt(gPanel, 1)
   249   ]));
   250 }
   252 function verifyContents(aMatches) {
   253   is(gSources.visibleItems.length, 3,
   254     "The unmatched sources in the widget should not be hidden.");
   255   is(gSearchView.itemCount, aMatches.length,
   256     "The filtered sources view should have the right items available.");
   258   for (let i = 0; i < gSearchView.itemCount; i++) {
   259     let trimmedLabel = gSourceUtils.trimUrlLength(gSourceUtils.trimUrlQuery(aMatches[i]));
   260     let trimmedLocation = gSourceUtils.trimUrlLength(EXAMPLE_URL + aMatches[i], 0, "start");
   262     ok(gSearchView.widget._parent.querySelector(".results-panel-item-label[value=\"" + trimmedLabel + "\"]"),
   263       "The filtered sources view should have the correct source labels.");
   264     ok(gSearchView.widget._parent.querySelector(".results-panel-item-label-below[value=\"" + trimmedLocation + "\"]"),
   265       "The filtered sources view should have the correct source locations.");
   266   }
   267 }
   269 registerCleanupFunction(function() {
   270   gTab = null;
   271   gDebuggee = null;
   272   gPanel = null;
   273   gDebugger = null;
   274   gSources = null;
   275   gSourceUtils = null;
   276   gSearchView = null;
   277   gSearchBox = null;
   278 });

mercurial