Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: LayoutTests/inspector/sources/debugger/breakpoint-manager.html

Issue 322793003: Devtools: Move out helper methods from breakpoint-manager.html to separate file to reuse them later (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add callback to InspectorTest.setBreakpoint Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <html> 1 <html>
2 <head> 2 <head>
3 <script src="../../../http/tests/inspector/inspector-test.js"></script> 3 <script src="../../../http/tests/inspector/inspector-test.js"></script>
4 <script src="breakpoint-manager.js"></script>
4 5
5 <script> 6 <script>
6 7
7 function test() 8 function test()
8 { 9 {
9 var workspace;
10 var uiSourceCodes = {};
11 var mockTarget = { 10 var mockTarget = {
12 11
13 id: function() 12 id: function()
14 { 13 {
15 return 1; 14 return 1;
16 } 15 }
17 }; 16 };
17 InspectorTest.initializeDefaultMappingOn(mockTarget);
18 var targetManager = new WebInspector.TargetManager(); 18 var targetManager = new WebInspector.TargetManager();
19 targetManager._targets.push(mockTarget); 19 targetManager._targets.push(mockTarget);
20 20
21 var defaultMapping = {
22 rawLocationToUILocation: function(rawLocation)
23 {
24 return uiSourceCodes[rawLocation.scriptId].uiLocation(rawLocation.li neNumber, 0);
25 },
26
27 uiLocationToRawLocation: function(uiSourceCode, lineNumber)
28 {
29 if (!uiSourceCodes[uiSourceCode.url])
30 return null;
31 return new WebInspector.DebuggerModel.Location(mockTarget, uiSourceC ode.url, lineNumber, 0);
32 },
33
34 isIdentity: function()
35 {
36 return true;
37 }
38 };
39
40 var shiftingMapping = { 21 var shiftingMapping = {
41 rawLocationToUILocation: function(rawLocation) 22 rawLocationToUILocation: function(rawLocation)
42 { 23 {
43 if (this._disabled) 24 if (this._disabled)
44 return null; 25 return null;
45 return uiSourceCodes[rawLocation.scriptId].uiLocation(rawLocation.li neNumber + 10, 0); 26 return InspectorTest.uiSourceCodes[rawLocation.scriptId].uiLocation( rawLocation.lineNumber + 10, 0);
46 }, 27 },
47 28
48 uiLocationToRawLocation: function(uiSourceCode, lineNumber) 29 uiLocationToRawLocation: function(uiSourceCode, lineNumber)
49 { 30 {
50 return new WebInspector.DebuggerModel.Location(mockTarget, uiSourceC ode.url, lineNumber - 10, 0); 31 return new WebInspector.DebuggerModel.Location(mockTarget, uiSourceC ode.url, lineNumber - 10, 0);
51 }, 32 },
52 33
53 isIdentity: function() 34 isIdentity: function()
54 { 35 {
55 return false; 36 return false;
(...skipping 17 matching lines...) Expand all
73 54
74 isIdentity: function() 55 isIdentity: function()
75 { 56 {
76 return false; 57 return false;
77 } 58 }
78 }; 59 };
79 60
80 return mapping; 61 return mapping;
81 } 62 }
82 63
83 function DebuggerModelMock(sourceMapping)
84 {
85 mockTarget.debuggerModel = this;
86 this._breakpointResolvedEventTarget = new WebInspector.Object();
87 this._scripts = {};
88 this._sourceMapping = sourceMapping;
89 this._breakpoints = {};
90 }
91
92 DebuggerModelMock.prototype = {
93 target: function()
94 {
95 return mockTarget;
96 },
97
98 _addScript: function(scriptId, url)
99 {
100 this._scripts[scriptId] = new WebInspector.Script(mockTarget, script Id, url);
101 this._scripts[scriptId].pushSourceMapping(this._sourceMapping);
102 },
103
104 _scriptForURL: function(url)
105 {
106 for (var scriptId in this._scripts) {
107 var script = this._scripts[scriptId];
108 if (script.sourceURL === url)
109 return script;
110 }
111 },
112
113 _scheduleSetBeakpointCallback: function(callback, breakpointId, location s)
114 {
115 setTimeout(innerCallback.bind(this), 0);
116
117 function innerCallback()
118 {
119 if (callback)
120 callback(breakpointId, locations);
121 if (window.setBreakpointCallback) {
122 var savedCallback = window.setBreakpointCallback;
123 delete window.setBreakpointCallback;
124 savedCallback();
125 }
126 }
127 },
128
129 setBreakpointByURL: function(url, lineNumber, columnNumber, condition, c allback)
130 {
131 InspectorTest.addResult(" debuggerModel.setBreakpoint(" + [url, l ineNumber, condition].join(":") + ")");
132
133 var breakpointId = url + ":" + lineNumber;
134 if (this._breakpoints[breakpointId]) {
135 this._scheduleSetBeakpointCallback(callback, null);
136 return;
137 }
138 this._breakpoints[breakpointId] = true;
139
140 var locations = [];
141 var script = this._scriptForURL(url);
142 if (script) {
143 var location = new WebInspector.DebuggerModel.Location(mockTarge t, script.scriptId, lineNumber, 0);
144 locations.push(location);
145 }
146
147 this._scheduleSetBeakpointCallback(callback, breakpointId, locations );
148 },
149
150 setBreakpointByScriptLocation: function(location, condition, callback)
151 {
152 InspectorTest.addResult(" debuggerModel.setBreakpoint(" + [locati on.scriptId, location.lineNumber, condition].join(":") + ")");
153
154 var breakpointId = location.scriptId + ":" + location.lineNumber;
155 if (this._breakpoints[breakpointId]) {
156 this._scheduleSetBeakpointCallback(callback, null);
157 return;
158 }
159 this._breakpoints[breakpointId] = true;
160
161 if (location.lineNumber >= 2000) {
162 this._scheduleSetBeakpointCallback(callback, breakpointId, []);
163 return;
164 }
165 if (location.lineNumber >= 1000) {
166 var shiftedLocation = new WebInspector.DebuggerModel.Location(mo ckTarget, location.scriptId, location.lineNumber + 10, location.columnNumber);
167 this._scheduleSetBeakpointCallback(callback, breakpointId, [shif tedLocation]);
168 return;
169 }
170
171 this._scheduleSetBeakpointCallback(callback, breakpointId, [WebInspe ctor.DebuggerModel.Location.fromPayload(mockTarget, location)]);
172 },
173
174 removeBreakpoint: function(breakpointId, callback)
175 {
176 InspectorTest.addResult(" debuggerModel.removeBreakpoint(" + brea kpointId + ")");
177 delete this._breakpoints[breakpointId];
178 if (callback)
179 callback();
180 },
181
182 setBreakpointsActive: function() { },
183
184 createLiveLocation: function(rawLocation, updateDelegate)
185 {
186 return this._scripts[rawLocation.scriptId].createLiveLocation(rawLoc ation, updateDelegate);
187 },
188
189 scriptForId: function(scriptId)
190 {
191 return this._scripts[scriptId];
192 },
193
194 reset: function()
195 {
196 InspectorTest.addResult(" Resetting debugger.");
197 this._scripts = {};
198 },
199
200 pushSourceMapping: function(sourceMapping)
201 {
202 for (var scriptId in this._scripts)
203 this._scripts[scriptId].pushSourceMapping(sourceMapping);
204 },
205
206 disableSourceMapping: function(sourceMapping)
207 {
208 sourceMapping._disabled = true;
209 for (var scriptId in this._scripts)
210 this._scripts[scriptId].updateLocations();
211 },
212
213 addBreakpointListener: function(breakpointId, listener, thisObject)
214 {
215 this._breakpointResolvedEventTarget.addEventListener(breakpointId, l istener, thisObject)
216 },
217
218 removeBreakpointListener: function(breakpointId, listener, thisObject)
219 {
220 this._breakpointResolvedEventTarget.removeEventListener(breakpointId , listener, thisObject);
221 },
222
223 _breakpointResolved: function(breakpointId, location)
224 {
225 this._breakpointResolvedEventTarget.dispatchEventToListeners(breakpo intId, location);
226 }
227 }
228 DebuggerModelMock.prototype.__proto__ = WebInspector.Object.prototype;
229
230 function resetWorkspace(breakpointManager) 64 function resetWorkspace(breakpointManager)
231 { 65 {
232 InspectorTest.addResult(" Resetting workspace."); 66 InspectorTest.addResult(" Resetting workspace.");
233 breakpointManager._networkWorkspaceBinding.reset(); 67 breakpointManager._networkWorkspaceBinding.reset();
234 breakpointManager._debuggerProjectDelegate.reset(); 68 breakpointManager._debuggerProjectDelegate.reset();
235 } 69 }
236 70
237 function breakpointAdded(event)
238 {
239 var breakpoint = event.data.breakpoint;
240 var uiLocation = event.data.uiLocation;
241 InspectorTest.addResult(" breakpointAdded(" + [uiLocation.uiSourceCod e.originURL(), uiLocation.lineNumber, uiLocation.columnNumber, breakpoint.condit ion(), breakpoint.enabled()].join(", ") + ")");
242 }
243
244 function breakpointRemoved(event)
245 {
246 var uiLocation = event.data.uiLocation;
247 InspectorTest.addResult(" breakpointRemoved(" + [uiLocation.uiSourceC ode.originURL(), uiLocation.lineNumber, uiLocation.columnNumber].join(", ") + ") ");
248 }
249
250 InspectorTest.addSniffer(WebInspector.Script.prototype, "createLiveLocation" , function(rawLocation)
251 {
252 InspectorTest.addResult(" Location created: " + rawLocation.scriptId + ":" + rawLocation.lineNumber);
253 }, true);
254 InspectorTest.addSniffer(WebInspector.Script.Location.prototype, "dispose", function()
255 {
256 InspectorTest.addResult(" Location disposed: " + this._rawLocation.sc riptId + ":" + this._rawLocation.lineNumber);
257 }, true);
258
259 function addUISourceCode(breakpointManager, url, doNotSetSourceMapping, doNo tAddScript)
260 {
261 if (!doNotAddScript)
262 mockTarget.debuggerModel._addScript(url, url);
263 InspectorTest.addResult(" Adding UISourceCode: " + url);
264 var contentProvider = new WebInspector.StaticContentProvider(WebInspecto r.resourceTypes.Script, "");
265 var uiSourceCode = breakpointManager._networkWorkspaceBinding.addFileFor URL(url, contentProvider);
266 uiSourceCodes[url] = uiSourceCode;
267 if (!doNotSetSourceMapping)
268 uiSourceCode.setSourceMappingForTarget(mockTarget, defaultMapping);
269 return uiSourceCode;
270 }
271
272 function addTemporaryUISourceCode(breakpointManager, url) 71 function addTemporaryUISourceCode(breakpointManager, url)
273 { 72 {
274 mockTarget.debuggerModel._addScript(url, url); 73 mockTarget.debuggerModel._addScript(url, url);
275 InspectorTest.addResult(" Adding temporary UISourceCode: " + url); 74 InspectorTest.addResult(" Adding temporary UISourceCode: " + url);
276 var contentProvider = new WebInspector.StaticContentProvider(WebInspecto r.resourceTypes.Script, ""); 75 var contentProvider = new WebInspector.StaticContentProvider(WebInspecto r.resourceTypes.Script, "");
277 var path = breakpointManager._debuggerProjectDelegate.addContentProvider ("", url, url, contentProvider); 76 var path = breakpointManager._debuggerProjectDelegate.addContentProvider ("", url, url, contentProvider);
278 var uiSourceCode = workspace.uiSourceCode("debugger:", path); 77 var uiSourceCode = breakpointManager._workspace.uiSourceCode("debugger:" , path);
279 uiSourceCode.setSourceMappingForTarget(mockTarget, defaultMapping); 78 uiSourceCode.setSourceMappingForTarget(mockTarget, mockTarget.defaultMap ping);
280 uiSourceCodes[url] = uiSourceCode; 79 InspectorTest.uiSourceCodes[url] = uiSourceCode;
281 return uiSourceCode; 80 return uiSourceCode;
282 } 81 }
283 82
284 function createBreakpoint(uiSourceCodeId, lineNumber, condition, enabled) 83 function createBreakpoint(uiSourceCodeId, lineNumber, condition, enabled)
285 { 84 {
286 return { sourceFileId: uiSourceCodeId, lineNumber: lineNumber, condition : condition, enabled: enabled }; 85 return { sourceFileId: uiSourceCodeId, lineNumber: lineNumber, condition : condition, enabled: enabled };
287 } 86 }
288 87
88 InspectorTest.setupLiveLocationSniffers();
289 var serializedBreakpoints = []; 89 var serializedBreakpoints = [];
290 serializedBreakpoints.push(createBreakpoint("a.js", 10, "foo == bar", true)) ; 90 serializedBreakpoints.push(createBreakpoint("a.js", 10, "foo == bar", true)) ;
291 serializedBreakpoints.push(createBreakpoint("a.js", 20, "", false)); 91 serializedBreakpoints.push(createBreakpoint("a.js", 20, "", false));
292 serializedBreakpoints.push(createBreakpoint("b.js", 3, "", true)); 92 serializedBreakpoints.push(createBreakpoint("b.js", 3, "", true));
293 93
294 function createBreakpointManager(persistentBreakpoints, sourceMapping) 94 var addUISourceCode = InspectorTest.addUISourceCode.bind(null, mockTarget);
295 { 95 var createBreakpointManager = InspectorTest.createBreakpointManager.bind(nul l, targetManager);
296 persistentBreakpoints = persistentBreakpoints || [];
297 var setting = {
298 get: function() { return persistentBreakpoints; },
299 set: function(breakpoints) { persistentBreakpoints = breakpoints; }
300 };
301
302 var sourceMapping = sourceMapping || defaultMapping;
303 var debuggerModel = new DebuggerModelMock(sourceMapping);
304 workspace = new WebInspector.Workspace();
305 var breakpointManager = new WebInspector.BreakpointManager(setting, work space, targetManager);
306 breakpointManager._networkWorkspaceBinding = new WebInspector.NetworkWor kspaceBinding(workspace);
307 breakpointManager._debuggerProjectDelegate = new WebInspector.DebuggerPr ojectDelegate(workspace, "debugger:", WebInspector.projectTypes.Debugger);
308 breakpointManager.addEventListener(WebInspector.BreakpointManager.Events .BreakpointAdded, breakpointAdded);
309 breakpointManager.addEventListener(WebInspector.BreakpointManager.Events .BreakpointRemoved, breakpointRemoved);
310 InspectorTest.addResult(" Created breakpoints manager");
311 dumpBreakpointStorage(breakpointManager);
312 return breakpointManager;
313 }
314
315 function setBreakpoint(breakpointManager, uiSourceCode, lineNumber, columnNu mber, condition, enabled)
316 {
317 InspectorTest.addResult(" Setting breakpoint at " + uiSourceCode.origin URL() + ":" + lineNumber + ":" + columnNumber + " enabled:" + enabled + " condit ion:" + condition);
318 return breakpointManager.setBreakpoint(uiSourceCode, lineNumber, columnN umber, condition, enabled);
319 }
320
321 function removeBreakpoint(breakpointManager, uiSourceCode, lineNumber, colum nNumber)
322 {
323 InspectorTest.addResult(" Removing breakpoint at " + uiSourceCode.origi nURL() + ":" + lineNumber + ":" + columnNumber);
324 breakpointManager.findBreakpoint(uiSourceCode, lineNumber, columnNumber) .remove();
325 }
326
327 function dumpBreakpointStorage(breakpointManager)
328 {
329 var breakpoints = breakpointManager._storage._setting.get();
330 InspectorTest.addResult(" Dumping Storage");
331 for (var i = 0; i < breakpoints.length; ++i)
332 InspectorTest.addResult(" " + breakpoints[i].sourceFileId + ":" + breakpoints[i].lineNumber + " enabled:" + breakpoints[i].enabled + " condition :" + breakpoints[i].condition);
333 }
334
335 function dumpBreakpointLocations(breakpointManager)
336 {
337 var allBreakpointLocations = breakpointManager.allBreakpointLocations();
338 InspectorTest.addResult(" Dumping Breakpoint Locations");
339 var lastUISourceCode = null;
340 var locations = [];
341
342 function dumpLocations(uiSourceCode, locations)
343 {
344 InspectorTest.addResult(" UISourceCode (url='" + uiSourceCode.url + "', uri='" + uiSourceCode.uri() + "')");
345 for (var i = 0; i < locations.length; ++i)
346 InspectorTest.addResult(" Location: (" + locations[i].lineN umber + ", " + locations[i].columnNumber + ")");
347 }
348
349 for (var i = 0; i < allBreakpointLocations.length; ++i) {
350 var uiLocation = allBreakpointLocations[i].uiLocation;
351 var uiSourceCode = uiLocation.uiSourceCode;
352 if (lastUISourceCode && lastUISourceCode != uiSourceCode) {
353 dumpLocations(uiSourceCode, locations);
354 locations = [];
355 }
356 lastUISourceCode = uiSourceCode;
357 locations.push(uiLocation);
358 }
359 if (lastUISourceCode)
360 dumpLocations(lastUISourceCode, locations);
361 }
362
363 function resetBreakpointManager(breakpointManager, next)
364 {
365 dumpBreakpointStorage(breakpointManager);
366 InspectorTest.addResult(" Resetting breakpoint manager");
367 breakpointManager.removeAllBreakpoints();
368 breakpointManager.removeProvisionalBreakpointsForTest();
369 uiSourceCodes = {};
370 next();
371 }
372 96
373 InspectorTest.runTestSuite([ 97 InspectorTest.runTestSuite([
374 function testSetBreakpoint(next) 98 function testSetBreakpoint(next)
375 { 99 {
376 var breakpointManager = createBreakpointManager(); 100 var breakpointManager = createBreakpointManager();
377 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 101 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
378 setBreakpoint(breakpointManager, uiSourceCode, 30, 0, "", true); 102 InspectorTest.setBreakpoint(breakpointManager, uiSourceCode, 30, 0, "", true, InspectorTest.resetAndFinish.bind(this, breakpointManager, next));
379 window.setBreakpointCallback = step2.bind(this);
380
381 function step2()
382 {
383 dumpBreakpointLocations(breakpointManager);
384 resetBreakpointManager(breakpointManager, step3);
385 }
386
387 function step3()
388 {
389 dumpBreakpointLocations(breakpointManager);
390 next();
391 }
392 }, 103 },
393 104
394 function testSetDisabledBreakpoint(next) 105 function testSetDisabledBreakpoint(next)
395 { 106 {
396 var breakpointManager = createBreakpointManager(); 107 var breakpointManager = createBreakpointManager();
397 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 108 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
398 var breakpoint = setBreakpoint(breakpointManager, uiSourceCode, 30, 0, "", false); 109 var breakpoint = InspectorTest.setBreakpoint(breakpointManager, uiSo urceCode, 30, 0, "", false);
399 dumpBreakpointLocations(breakpointManager); 110 InspectorTest.dumpBreakpointLocations(breakpointManager);
400 dumpBreakpointStorage(breakpointManager); 111 InspectorTest.dumpBreakpointStorage(breakpointManager);
401 InspectorTest.addResult(" Enabling breakpoint"); 112 InspectorTest.addResult(" Enabling breakpoint");
402 breakpoint.setEnabled(true); 113 breakpoint.setEnabled(true);
403 window.setBreakpointCallback = step2.bind(this); 114 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind(thi s, breakpointManager, next);
404
405 function step2()
406 {
407 dumpBreakpointLocations(breakpointManager);
408 resetBreakpointManager(breakpointManager, step3);
409 }
410
411 function step3()
412 {
413 dumpBreakpointLocations(breakpointManager);
414 next();
415 }
416 }, 115 },
417 116
418 function testSetConditionalBreakpoint(next) 117 function testSetConditionalBreakpoint(next)
419 { 118 {
420 var breakpointManager = createBreakpointManager(); 119 var breakpointManager = createBreakpointManager();
421 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 120 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
422 var breakpoint = setBreakpoint(breakpointManager, uiSourceCode, 30, 0, "condition", true); 121 var breakpoint = InspectorTest.setBreakpoint(breakpointManager, uiSo urceCode, 30, 0, "condition", true, step2);
423 window.setBreakpointCallback = step2.bind(this);
424 122
425 function step2() 123 function step2()
426 { 124 {
427 dumpBreakpointLocations(breakpointManager); 125 InspectorTest.dumpBreakpointLocations(breakpointManager);
428 dumpBreakpointStorage(breakpointManager); 126 InspectorTest.dumpBreakpointStorage(breakpointManager);
429 InspectorTest.addResult(" Updating condition"); 127 InspectorTest.addResult(" Updating condition");
430 breakpoint.setCondition(""); 128 breakpoint.setCondition("");
431 window.setBreakpointCallback = step3.bind(this); 129 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind (this, breakpointManager, next);
432 }
433
434 function step3()
435 {
436 dumpBreakpointLocations(breakpointManager);
437 resetBreakpointManager(breakpointManager, step4);
438 }
439
440 function step4()
441 {
442 dumpBreakpointLocations(breakpointManager);
443 next();
444 } 130 }
445 }, 131 },
446 132
447 function testRestoreBreakpoints(next) 133 function testRestoreBreakpoints(next)
448 { 134 {
449 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 135 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
450 addUISourceCode(breakpointManager, "a.js"); 136 addUISourceCode(breakpointManager, "a.js");
451 window.setBreakpointCallback = step2.bind(this); 137 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind(thi s, breakpointManager, next);
452
453 function step2()
454 {
455 dumpBreakpointLocations(breakpointManager);
456 resetBreakpointManager(breakpointManager, step3);
457 }
458
459 function step3()
460 {
461 dumpBreakpointLocations(breakpointManager);
462 next();
463 }
464 }, 138 },
465 139
466 function testRestoreBreakpointsTwice(next) 140 function testRestoreBreakpointsTwice(next)
467 { 141 {
468 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 142 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
469 addUISourceCode(breakpointManager, "a.js"); 143 addUISourceCode(breakpointManager, "a.js");
470 addUISourceCode(breakpointManager, "a.js"); 144 addUISourceCode(breakpointManager, "a.js");
471 window.setBreakpointCallback = step2.bind(this); 145 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind(thi s, breakpointManager, next);
472
473 function step2()
474 {
475 dumpBreakpointLocations(breakpointManager);
476 resetBreakpointManager(breakpointManager, step3);
477 }
478
479 function step3()
480 {
481 dumpBreakpointLocations(breakpointManager);
482 next();
483 }
484 }, 146 },
485 147
486 function testRemoveBreakpoints(next) 148 function testRemoveBreakpoints(next)
487 { 149 {
488 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 150 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
489 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 151 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
490 window.setBreakpointCallback = step2.bind(this); 152 window.setBreakpointCallback = step2.bind(this);
491 153
492 function step2() 154 function step2()
493 { 155 {
494 dumpBreakpointLocations(breakpointManager); 156 InspectorTest.dumpBreakpointLocations(breakpointManager);
495 setBreakpoint(breakpointManager, uiSourceCode, 30, 0, "", true); 157 InspectorTest.setBreakpoint(breakpointManager, uiSourceCode, 30, 0, "", true, step3);
496 window.setBreakpointCallback = step3.bind(this);
497 } 158 }
498 159
499 function step3() 160 function step3()
500 { 161 {
501 dumpBreakpointLocations(breakpointManager); 162 InspectorTest.dumpBreakpointLocations(breakpointManager);
502 removeBreakpoint(breakpointManager, uiSourceCode, 30, 0); 163 InspectorTest.removeBreakpoint(breakpointManager, uiSourceCode, 30, 0);
503 removeBreakpoint(breakpointManager, uiSourceCode, 10, 0); 164 InspectorTest.removeBreakpoint(breakpointManager, uiSourceCode, 10, 0);
504 removeBreakpoint(breakpointManager, uiSourceCode, 20, 0); 165 InspectorTest.removeBreakpoint(breakpointManager, uiSourceCode, 20, 0);
505 dumpBreakpointLocations(breakpointManager); 166 InspectorTest.resetAndFinish(breakpointManager, next);
506 resetBreakpointManager(breakpointManager, step4);
507 }
508
509 function step4()
510 {
511 dumpBreakpointLocations(breakpointManager);
512 next();
513 } 167 }
514 }, 168 },
515 169
516 function testSetBreakpointThatShifts(next) 170 function testSetBreakpointThatShifts(next)
517 { 171 {
518 var breakpointManager = createBreakpointManager(); 172 var breakpointManager = createBreakpointManager();
519 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 173 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
520 setBreakpoint(breakpointManager, uiSourceCode, 1015, 0, "", true); 174 InspectorTest.setBreakpoint(breakpointManager, uiSourceCode, 1015, 0 , "", true, InspectorTest.resetAndFinish.bind(this, breakpointManager, next));
vsevik 2014/06/09 15:27:11 Why don't you use it everywhere?
521 window.setBreakpointCallback = step2.bind(this);
522
523 function step2()
524 {
525 dumpBreakpointLocations(breakpointManager);
526 resetBreakpointManager(breakpointManager, step3);
527 }
528
529 function step3()
530 {
531 dumpBreakpointLocations(breakpointManager);
532 next();
533 }
534 }, 175 },
535 176
536 function testSetBreakpointThatShiftsTwice(next) 177 function testSetBreakpointThatShiftsTwice(next)
537 { 178 {
538 var breakpointManager = createBreakpointManager(); 179 var breakpointManager = createBreakpointManager();
539 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 180 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
540 setBreakpoint(breakpointManager, uiSourceCode, 1015, 0, "", true); 181 InspectorTest.setBreakpoint(breakpointManager, uiSourceCode, 1015, 0 , "", true, step2);
541 window.setBreakpointCallback = step2.bind(this);
542 182
543 function step2() 183 function step2()
544 { 184 {
545 dumpBreakpointLocations(breakpointManager); 185 InspectorTest.dumpBreakpointLocations(breakpointManager);
546 setBreakpoint(breakpointManager, uiSourceCode, 1015, 0, "", true ); 186 InspectorTest.setBreakpoint(breakpointManager, uiSourceCode, 101 5, 0, "", true, InspectorTest.resetAndFinish.bind(this, breakpointManager, next) );
547 window.setBreakpointCallback = step3.bind(this);
548 }
549
550 function step3()
551 {
552 dumpBreakpointLocations(breakpointManager);
553 resetBreakpointManager(breakpointManager, step4);
554 }
555
556 function step4()
557 {
558 dumpBreakpointLocations(breakpointManager);
559 next();
560 } 187 }
561 }, 188 },
562 189
563 function testSetBreakpointOutsideScript(next) 190 function testSetBreakpointOutsideScript(next)
564 { 191 {
565 var breakpointManager = createBreakpointManager([]); 192 var breakpointManager = createBreakpointManager();
566 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 193 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
567 breakpointManager.setBreakpoint(uiSourceCode, 2500, 0, "", true); 194 breakpointManager.setBreakpoint(uiSourceCode, 2500, 0, "", true);
568 window.setBreakpointCallback = step2.bind(this); 195 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind(thi s, breakpointManager, next);
569
570 function step2()
571 {
572 dumpBreakpointLocations(breakpointManager);
573 resetBreakpointManager(breakpointManager, step3);
574 }
575
576 function step3()
577 {
578 dumpBreakpointLocations(breakpointManager);
579 next();
580 }
581 }, 196 },
582 197
583 function testNavigation(next) 198 function testNavigation(next)
584 { 199 {
585 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 200 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
586 var uiSourceCodeA = addUISourceCode(breakpointManager, "a.js"); 201 var uiSourceCodeA = addUISourceCode(breakpointManager, "a.js");
587 window.setBreakpointCallback = step2.bind(this); 202 window.setBreakpointCallback = step2.bind(this);
588 203
589 function step2() 204 function step2()
590 { 205 {
591 dumpBreakpointLocations(breakpointManager); 206 InspectorTest.dumpBreakpointLocations(breakpointManager);
592 InspectorTest.addResult("\n Navigating to B."); 207 InspectorTest.addResult("\n Navigating to B.");
593 mockTarget.debuggerModel.reset(); 208 mockTarget.debuggerModel.reset();
594 resetWorkspace(breakpointManager); 209 resetWorkspace(breakpointManager);
595 var uiSourceCodeB = addUISourceCode(breakpointManager, "b.js"); 210 var uiSourceCodeB = addUISourceCode(breakpointManager, "b.js");
596 window.setBreakpointCallback = step3.bind(this); 211 window.setBreakpointCallback = step3.bind(this);
597 } 212 }
598 213
599 function step3() 214 function step3()
600 { 215 {
601 dumpBreakpointLocations(breakpointManager); 216 InspectorTest.dumpBreakpointLocations(breakpointManager);
602 InspectorTest.addResult("\n Navigating back to A."); 217 InspectorTest.addResult("\n Navigating back to A.");
603 mockTarget.debuggerModel.reset(); 218 mockTarget.debuggerModel.reset();
604 resetWorkspace(breakpointManager); 219 resetWorkspace(breakpointManager);
605 InspectorTest.addResult(" Resolving provisional breakpoint."); 220 InspectorTest.addResult(" Resolving provisional breakpoint.");
606 addTemporaryUISourceCode(breakpointManager, "a.js"); 221 addTemporaryUISourceCode(breakpointManager, "a.js");
607 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 11, 5)); 222 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 11, 5));
608 addUISourceCode(breakpointManager, "a.js"); 223 addUISourceCode(breakpointManager, "a.js");
609 window.setBreakpointCallback = step4.bind(this); 224 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind (this, breakpointManager, next);
610 }
611
612 function step4()
613 {
614 dumpBreakpointLocations(breakpointManager);
615 resetBreakpointManager(breakpointManager, step5);
616 }
617
618 function step5()
619 {
620 dumpBreakpointLocations(breakpointManager);
621 next();
622 } 225 }
623 }, 226 },
624 227
625 function testSourceMapping(next) 228 function testSourceMapping(next)
626 { 229 {
627 // Source mapping will shift everthing 10 lines ahead so that breakp oint 1 clashed with breakpoint 2. 230 // Source mapping will shift everthing 10 lines ahead so that breakp oint 1 clashed with breakpoint 2.
628 var serializedBreakpoints = []; 231 var serializedBreakpoints = [];
629 serializedBreakpoints.push(createBreakpoint("a.js", 10, "foo == bar" , true)); 232 serializedBreakpoints.push(createBreakpoint("a.js", 10, "foo == bar" , true));
630 serializedBreakpoints.push(createBreakpoint("a.js", 20, "", true)); 233 serializedBreakpoints.push(createBreakpoint("a.js", 20, "", true));
631 234
632 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 235 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
633 var uiSourceCodeA = addUISourceCode(breakpointManager, "a.js"); 236 var uiSourceCodeA = addUISourceCode(breakpointManager, "a.js");
634 window.setBreakpointCallback = step2.bind(this); 237 window.setBreakpointCallback = step2.bind(this);
635 238
636 function step2() 239 function step2()
637 { 240 {
638 window.setBreakpointCallback = step3.bind(this); 241 window.setBreakpointCallback = step3.bind(this);
639 } 242 }
640 243
641 function step3() 244 function step3()
642 { 245 {
643 dumpBreakpointLocations(breakpointManager); 246 InspectorTest.dumpBreakpointLocations(breakpointManager);
644 InspectorTest.addResult("\n Toggling source mapping."); 247 InspectorTest.addResult("\n Toggling source mapping.");
645 mockTarget.debuggerModel.pushSourceMapping(shiftingMapping); 248 mockTarget.debuggerModel.pushSourceMapping(shiftingMapping);
646 dumpBreakpointLocations(breakpointManager); 249 InspectorTest.dumpBreakpointLocations(breakpointManager);
647 InspectorTest.addResult("\n Toggling source mapping back."); 250 InspectorTest.addResult("\n Toggling source mapping back.");
648 mockTarget.debuggerModel.disableSourceMapping(shiftingMapping); 251 mockTarget.debuggerModel.disableSourceMapping(shiftingMapping);
649 dumpBreakpointLocations(breakpointManager); 252 InspectorTest.resetAndFinish(breakpointManager, next);
650 resetBreakpointManager(breakpointManager, step4);
651 } 253 }
652 254
653 function step4()
654 {
655 dumpBreakpointLocations(breakpointManager);
656 next();
657 }
658 }, 255 },
659 256
660 function testProvisionalBreakpointsResolve(next) 257 function testProvisionalBreakpointsResolve(next)
661 { 258 {
662 var serializedBreakpoints = []; 259 var serializedBreakpoints = [];
663 serializedBreakpoints.push(createBreakpoint("a.js", 10, "foo == bar" , true)); 260 serializedBreakpoints.push(createBreakpoint("a.js", 10, "foo == bar" , true));
664 261
665 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 262 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
666 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 263 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
667 window.setBreakpointCallback = step2.bind(this); 264 window.setBreakpointCallback = step2.bind(this);
668 265
669 function step2() 266 function step2()
670 { 267 {
671 dumpBreakpointLocations(breakpointManager); 268 InspectorTest.dumpBreakpointLocations(breakpointManager);
672 mockTarget.debuggerModel.reset(); 269 mockTarget.debuggerModel.reset();
673 resetWorkspace(breakpointManager); 270 resetWorkspace(breakpointManager);
674 InspectorTest.addResult(" Resolving provisional breakpoint."); 271 InspectorTest.addResult(" Resolving provisional breakpoint.");
675 addTemporaryUISourceCode(breakpointManager, "a.js"); 272 addTemporaryUISourceCode(breakpointManager, "a.js");
676 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 11, 5)); 273 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 11, 5));
677 var breakpoints = breakpointManager.allBreakpoints(); 274 var breakpoints = breakpointManager.allBreakpoints();
678 InspectorTest.assertEquals(breakpoints.length, 1, "Exactly one p rovisional breakpoint should be registered in breakpoint manager."); 275 InspectorTest.assertEquals(breakpoints.length, 1, "Exactly one p rovisional breakpoint should be registered in breakpoint manager.");
679 dumpBreakpointLocations(breakpointManager); 276 InspectorTest.resetAndFinish(breakpointManager, next);
680 resetBreakpointManager(breakpointManager, step3);
681 }
682
683 function step3()
684 {
685 dumpBreakpointLocations(breakpointManager);
686 next();
687 } 277 }
688 }, 278 },
689 279
690 function testSourceMappingReload(next) 280 function testSourceMappingReload(next)
691 { 281 {
692 // Source mapping will shift everthing 10 lines ahead. 282 // Source mapping will shift everthing 10 lines ahead.
693 var serializedBreakpoints = [createBreakpoint("b.js", 20, "foo == ba r", true)]; 283 var serializedBreakpoints = [createBreakpoint("b.js", 20, "foo == ba r", true)];
694 var breakpointManager = createBreakpointManager(serializedBreakpoint s); 284 var breakpointManager = createBreakpointManager(serializedBreakpoint s);
695 InspectorTest.addResult("\n Adding files:"); 285 InspectorTest.addResult("\n Adding files:");
696 var uiSourceCodeA = addUISourceCode(breakpointManager, "a.js"); 286 var uiSourceCodeA = addUISourceCode(breakpointManager, "a.js");
697 var uiSourceCodeB = addUISourceCode(breakpointManager, "b.js", true, true); 287 var uiSourceCodeB = addUISourceCode(breakpointManager, "b.js", true, true);
698 288
699 InspectorTest.addResult("\n Toggling source mapping."); 289 InspectorTest.addResult("\n Toggling source mapping.");
700 var sourceMapping = createSourceMapping(uiSourceCodeA, uiSourceCodeB ); 290 var sourceMapping = createSourceMapping(uiSourceCodeA, uiSourceCodeB );
701 mockTarget.debuggerModel.pushSourceMapping(sourceMapping); 291 mockTarget.debuggerModel.pushSourceMapping(sourceMapping);
702 window.setBreakpointCallback = provisionalBreakpointSet.bind(this); 292 window.setBreakpointCallback = provisionalBreakpointSet.bind(this);
703 uiSourceCodeB.setSourceMappingForTarget(mockTarget, sourceMapping); 293 uiSourceCodeB.setSourceMappingForTarget(mockTarget, sourceMapping);
704 294
705 function provisionalBreakpointSet() 295 function provisionalBreakpointSet()
706 { 296 {
707 window.setBreakpointCallback = step2.bind(this); 297 window.setBreakpointCallback = step2.bind(this);
708 } 298 }
709 299
710 function step2() 300 function step2()
711 { 301 {
712 dumpBreakpointLocations(breakpointManager); 302 InspectorTest.dumpBreakpointLocations(breakpointManager);
713 InspectorTest.addResult("\n Reloading:"); 303 InspectorTest.addResult("\n Reloading:");
714 mockTarget.debuggerModel.reset(); 304 mockTarget.debuggerModel.reset();
715 resetWorkspace(breakpointManager); 305 resetWorkspace(breakpointManager);
716 306
717 InspectorTest.addResult("\n Adding files:"); 307 InspectorTest.addResult("\n Adding files:");
718 addTemporaryUISourceCode(breakpointManager, "a.js"); 308 addTemporaryUISourceCode(breakpointManager, "a.js");
719 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 10, 5)); 309 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 10, 5));
720 uiSourceCodeA = addUISourceCode(breakpointManager, "a.js"); 310 uiSourceCodeA = addUISourceCode(breakpointManager, "a.js");
721 uiSourceCodeB = addUISourceCode(breakpointManager, "b.js", true, true); 311 uiSourceCodeB = addUISourceCode(breakpointManager, "b.js", true, true);
722 312
723 InspectorTest.addResult("\n Toggling source mapping."); 313 InspectorTest.addResult("\n Toggling source mapping.");
724 var sourceMapping = createSourceMapping(uiSourceCodeA, uiSourceC odeB); 314 var sourceMapping = createSourceMapping(uiSourceCodeA, uiSourceC odeB);
725 mockTarget.debuggerModel.pushSourceMapping(sourceMapping); 315 mockTarget.debuggerModel.pushSourceMapping(sourceMapping);
726 window.setBreakpointCallback = provisionalBreakpointSetAfterRelo ad.bind(this); 316 window.setBreakpointCallback = provisionalBreakpointSetAfterRelo ad.bind(this);
727 uiSourceCodeB.setSourceMappingForTarget(mockTarget, sourceMappin g); 317 uiSourceCodeB.setSourceMappingForTarget(mockTarget, sourceMappin g);
728 } 318 }
729 319
730 function provisionalBreakpointSetAfterReload() 320 function provisionalBreakpointSetAfterReload()
731 { 321 {
732 window.setBreakpointCallback = step3.bind(this); 322 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind (this, breakpointManager, next);
733 } 323 }
734 324
735 function step3()
736 {
737 dumpBreakpointLocations(breakpointManager);
738 resetBreakpointManager(breakpointManager, step4);
739 }
740
741 function step4()
742 {
743 dumpBreakpointLocations(breakpointManager);
744 next();
745 }
746 }, 325 },
747 326
748 function testBreakpointInCollectedReload(next) 327 function testBreakpointInCollectedReload(next)
749 { 328 {
750 var breakpointManager = createBreakpointManager(); 329 var breakpointManager = createBreakpointManager();
751 InspectorTest.addResult("\n Adding file without script:"); 330 InspectorTest.addResult("\n Adding file without script:");
752 var uiSourceCode = addUISourceCode(breakpointManager, "a.js", true, true); 331 var uiSourceCode = addUISourceCode(breakpointManager, "a.js", true, true);
753 332
754 InspectorTest.addResult("\n Setting breakpoint:"); 333 InspectorTest.addResult("\n Setting breakpoint:");
755 setBreakpoint(breakpointManager, uiSourceCode, 10, 0, "", true); 334 InspectorTest.setBreakpoint(breakpointManager, uiSourceCode, 10, 0, "", true, step2);
756 window.setBreakpointCallback = step2.bind(this);
757 335
758 function step2() 336 function step2()
759 { 337 {
760 dumpBreakpointLocations(breakpointManager); 338 InspectorTest.dumpBreakpointLocations(breakpointManager);
761 InspectorTest.addResult("\n Reloading:"); 339 InspectorTest.addResult("\n Reloading:");
762 mockTarget.debuggerModel.reset(); 340 mockTarget.debuggerModel.reset();
763 resetWorkspace(breakpointManager); 341 resetWorkspace(breakpointManager);
764 342
765 InspectorTest.addResult("\n Adding file with script:"); 343 InspectorTest.addResult("\n Adding file with script:");
766 var uiSourceCode = addUISourceCode(breakpointManager, "a.js"); 344 var uiSourceCode = addUISourceCode(breakpointManager, "a.js");
767 345
768 InspectorTest.addResult("\n Emulating breakpoint resolved event :"); 346 InspectorTest.addResult("\n Emulating breakpoint resolved event :");
769 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 10, 5)); 347 mockTarget.debuggerModel._breakpointResolved("a.js:10", new WebI nspector.DebuggerModel.Location(mockTarget, "a.js", 10, 5));
770 348
771 InspectorTest.addResult("\n Waiting for breakpoint to be set in debugger again:"); 349 InspectorTest.addResult("\n Waiting for breakpoint to be set in debugger again:");
772 window.setBreakpointCallback = step3.bind(this); 350 window.setBreakpointCallback = InspectorTest.resetAndFinish.bind (this, breakpointManager, next);
vsevik 2014/06/09 15:27:11 finishBreakpointTest?
sergeyv 2014/06/10 08:56:48 Done.
773 }
774
775 function step3()
776 {
777 dumpBreakpointLocations(breakpointManager);
778 resetBreakpointManager(breakpointManager, step4);
779 }
780
781 function step4()
782 {
783 dumpBreakpointLocations(breakpointManager);
784 next();
785 } 351 }
786 }, 352 },
787 ]); 353 ]);
788 }; 354 };
789 355
790 </script> 356 </script>
791 357
792 </head> 358 </head>
793 359
794 <body onload="runTest()"> 360 <body onload="runTest()">
795 <p>Tests BreakpointManager class.</p> 361 <p>Tests BreakpointManager class.</p>
796 362
797 </body> 363 </body>
798 </html> 364 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698