Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> | 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 322 * @param {!WebInspector.Event} event | 322 * @param {!WebInspector.Event} event |
| 323 */ | 323 */ |
| 324 _selectedNodeChanged: function(event) | 324 _selectedNodeChanged: function(event) |
| 325 { | 325 { |
| 326 var selectedNode = /** @type {?WebInspector.DOMNode} */ (event.data); | 326 var selectedNode = /** @type {?WebInspector.DOMNode} */ (event.data); |
| 327 for (var i = 0; i < this._treeOutlines.length; ++i) { | 327 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 328 if (!selectedNode || selectedNode.domModel() !== this._treeOutlines[ i].domModel()) | 328 if (!selectedNode || selectedNode.domModel() !== this._treeOutlines[ i].domModel()) |
| 329 this._treeOutlines[i].selectDOMNode(null); | 329 this._treeOutlines[i].selectDOMNode(null); |
| 330 } | 330 } |
| 331 | 331 |
| 332 if (!selectedNode && this._lastValidSelectedNode) | |
| 333 this._selectedPathOnReset = this._lastValidSelectedNode.path(); | |
| 334 | |
| 335 this._breadcrumbs.setSelectedNode(selectedNode); | 332 this._breadcrumbs.setSelectedNode(selectedNode); |
| 336 | 333 |
| 337 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode); | 334 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode); |
| 338 | 335 |
| 339 if (!selectedNode) | 336 if (!selectedNode) |
| 340 return; | 337 return; |
| 341 selectedNode.setAsInspectedNode(); | 338 selectedNode.setAsInspectedNode(); |
| 342 this._lastValidSelectedNode = selectedNode; | 339 if (!this._isSettingDefaultSelection) { |
| 340 this._selectedNodeOnReset = selectedNode; | |
| 341 this._hasNonDefaultSelectedNode = true; | |
| 342 } | |
| 343 | 343 |
| 344 var executionContexts = selectedNode.target().runtimeModel.executionCont exts(); | 344 var executionContexts = selectedNode.target().runtimeModel.executionCont exts(); |
| 345 var nodeFrameId = selectedNode.frameId(); | 345 var nodeFrameId = selectedNode.frameId(); |
| 346 for (var context of executionContexts) { | 346 for (var context of executionContexts) { |
| 347 if (context.frameId === nodeFrameId) { | 347 if (context.frameId === nodeFrameId) { |
| 348 WebInspector.context.setFlavor(WebInspector.ExecutionContext, co ntext); | 348 WebInspector.context.setFlavor(WebInspector.ExecutionContext, co ntext); |
| 349 break; | 349 break; |
| 350 } | 350 } |
| 351 } | 351 } |
| 352 }, | 352 }, |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 375 | 375 |
| 376 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(domModel) ; | 376 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(domModel) ; |
| 377 treeOutline.rootDOMNode = inspectedRootDocument; | 377 treeOutline.rootDOMNode = inspectedRootDocument; |
| 378 | 378 |
| 379 if (!inspectedRootDocument) { | 379 if (!inspectedRootDocument) { |
| 380 if (this.isShowing()) | 380 if (this.isShowing()) |
| 381 domModel.requestDocument(); | 381 domModel.requestDocument(); |
| 382 return; | 382 return; |
| 383 } | 383 } |
| 384 | 384 |
| 385 this._hasNonDefaultSelectedNode = false; | |
| 385 WebInspector.domBreakpointsSidebarPane.restoreBreakpoints(inspectedRootD ocument); | 386 WebInspector.domBreakpointsSidebarPane.restoreBreakpoints(inspectedRootD ocument); |
| 386 | 387 |
| 388 var defaultSelection = inspectedRootDocument.body || inspectedRootDocume nt.documentElement; | |
| 389 if (this._omitDefaultSelection || !defaultSelection) | |
| 390 return; | |
| 391 | |
| 392 this._restoreNode(domModel, this._selectedNodeOnReset) | |
| 393 .then(onNodeRestored.bind(this, this._selectedNodeOnReset)) | |
|
dgozman
2016/10/19 01:10:38
missing semicolon
lushnikov
2016/10/19 20:52:11
Done.
| |
| 394 | |
| 387 /** | 395 /** |
| 396 * @param {?WebInspector.DOMNode} staleNode | |
| 397 * @param {?WebInspector.DOMNode} restoredNode | |
| 388 * @this {WebInspector.ElementsPanel} | 398 * @this {WebInspector.ElementsPanel} |
| 389 * @param {?WebInspector.DOMNode} candidateFocusNode | |
| 390 */ | 399 */ |
| 391 function selectNode(candidateFocusNode) | 400 function onNodeRestored(staleNode, restoredNode) |
| 392 { | 401 { |
| 393 if (!candidateFocusNode) | 402 if (staleNode !== this._selectedNodeOnReset) |
| 394 candidateFocusNode = inspectedRootDocument.body || inspectedRoot Document.documentElement; | |
| 395 | |
| 396 if (!candidateFocusNode) | |
| 397 return; | 403 return; |
| 398 | 404 if (restoredNode) { |
| 399 if (!this._pendingNodeReveal) { | 405 this._preselectNode(restoredNode); |
| 400 this.selectDOMNode(candidateFocusNode); | 406 this._lastSelectedNodeSelectedForTest(); |
| 401 if (treeOutline.selectedTreeElement) | 407 } else { |
| 402 treeOutline.selectedTreeElement.expand(); | 408 this._preselectNode(defaultSelection); |
|
dgozman
2016/10/19 01:10:38
Should recalc default selection.
lushnikov
2016/10/19 20:52:11
Done.
| |
| 403 } | 409 } |
| 404 } | 410 } |
| 405 | |
| 406 /** | |
| 407 * @param {?DOMAgent.NodeId} nodeId | |
| 408 * @this {WebInspector.ElementsPanel} | |
| 409 */ | |
| 410 function selectLastSelectedNode(nodeId) | |
| 411 { | |
| 412 if (this.selectedDOMNode()) { | |
| 413 // Focused node has been explicitly set while reaching out for t he last selected node. | |
| 414 return; | |
| 415 } | |
| 416 var node = nodeId ? domModel.nodeForId(nodeId) : null; | |
| 417 selectNode.call(this, node); | |
| 418 this._lastSelectedNodeSelectedForTest(); | |
| 419 } | |
| 420 | |
| 421 if (this._omitDefaultSelection) | |
| 422 return; | |
| 423 | |
| 424 if (this._selectedPathOnReset) | |
| 425 domModel.pushNodeByPathToFrontend(this._selectedPathOnReset, selectL astSelectedNode.bind(this)); | |
| 426 else | |
| 427 selectNode.call(this, null); | |
| 428 delete this._selectedPathOnReset; | |
| 429 }, | 411 }, |
| 430 | 412 |
| 431 _lastSelectedNodeSelectedForTest: function() { }, | 413 _lastSelectedNodeSelectedForTest: function() { }, |
| 432 | 414 |
| 433 /** | 415 /** |
| 416 * @param {!WebInspector.DOMNode} node | |
| 417 */ | |
| 418 _preselectNode: function(node) | |
|
dgozman
2016/10/19 01:10:38
_setDefaultSelectedNode
dgozman
2016/10/19 01:10:38
Let's make this one responsible for default select
lushnikov
2016/10/19 20:52:11
The default selection seems to fit better in the o
lushnikov
2016/10/19 20:52:11
Done.
| |
| 419 { | |
| 420 if (this._hasNonDefaultSelectedNode || this._pendingNodeReveal) | |
| 421 return; | |
| 422 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(node.domM odel()); | |
| 423 if (!treeOutline) | |
| 424 return; | |
| 425 this._isSettingDefaultSelection = true; | |
|
dgozman
2016/10/19 01:10:38
nit: _isSettingDefaultSelectedNode
lushnikov
2016/10/19 20:52:11
Done.
| |
| 426 this.selectDOMNode(node); | |
| 427 this._isSettingDefaultSelection = false; | |
| 428 if (treeOutline.selectedTreeElement) | |
| 429 treeOutline.selectedTreeElement.expand(); | |
| 430 }, | |
| 431 | |
| 432 /** | |
| 433 * @param {!WebInspector.DOMModel} domModel | |
| 434 * @param {?WebInspector.DOMNode} staleNode | |
| 435 * @return {!Promise<?WebInspector.DOMNode>} | |
| 436 */ | |
| 437 _restoreNode: function(domModel, staleNode) | |
|
dgozman
2016/10/19 01:10:38
Let's make this inner function of _documentUpdated
lushnikov
2016/10/19 20:52:11
Done.
| |
| 438 { | |
| 439 var nodePath = staleNode ? staleNode.path() : null; | |
| 440 if (!nodePath) | |
| 441 return Promise.resolve(/** @type {?WebInspector.DOMNode} */(null)); | |
| 442 return domModel.pushNodeByPathToFrontendPromise(nodePath); | |
|
dgozman
2016/10/19 01:10:38
Let's maybe use callback version?
lushnikov
2016/10/19 20:52:11
Done.
| |
| 443 }, | |
| 444 | |
| 445 /** | |
| 434 * @override | 446 * @override |
| 435 */ | 447 */ |
| 436 searchCanceled: function() | 448 searchCanceled: function() |
| 437 { | 449 { |
| 438 delete this._searchQuery; | 450 delete this._searchQuery; |
| 439 this._hideSearchHighlights(); | 451 this._hideSearchHighlights(); |
| 440 | 452 |
| 441 this._searchableView.updateSearchMatchesCount(0); | 453 this._searchableView.updateSearchMatchesCount(0); |
| 442 | 454 |
| 443 delete this._currentSearchResultIndex; | 455 delete this._currentSearchResultIndex; |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 712 treeOutline.domModel().redo(); | 724 treeOutline.domModel().redo(); |
| 713 event.handled = true; | 725 event.handled = true; |
| 714 } | 726 } |
| 715 } | 727 } |
| 716 | 728 |
| 717 if (WebInspector.isEditing() && event.keyCode !== WebInspector.KeyboardS hortcut.Keys.F2.code) | 729 if (WebInspector.isEditing() && event.keyCode !== WebInspector.KeyboardS hortcut.Keys.F2.code) |
| 718 return; | 730 return; |
| 719 | 731 |
| 720 var treeOutline = null; | 732 var treeOutline = null; |
| 721 for (var i = 0; i < this._treeOutlines.length; ++i) { | 733 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 722 if (this._treeOutlines[i].selectedDOMNode() === this._lastValidSelec tedNode) | 734 if (this._treeOutlines[i].selectedDOMNode()) |
| 723 treeOutline = this._treeOutlines[i]; | 735 treeOutline = this._treeOutlines[i]; |
| 724 } | 736 } |
| 725 if (!treeOutline) | 737 if (!treeOutline) |
| 726 return; | 738 return; |
| 727 | 739 |
| 728 if (!treeOutline.editing()) { | 740 if (!treeOutline.editing()) { |
| 729 handleUndoRedo.call(null, treeOutline); | 741 handleUndoRedo.call(null, treeOutline); |
| 730 if (event.handled) { | 742 if (event.handled) { |
| 731 this._stylesWidget.forceUpdate(); | 743 this._stylesWidget.forceUpdate(); |
| 732 return; | 744 return; |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1108 /** | 1120 /** |
| 1109 * @override | 1121 * @override |
| 1110 * @param {!WebInspector.DOMNode} node | 1122 * @param {!WebInspector.DOMNode} node |
| 1111 * @return {?{title: string, color: string}} | 1123 * @return {?{title: string, color: string}} |
| 1112 */ | 1124 */ |
| 1113 decorate: function(node) | 1125 decorate: function(node) |
| 1114 { | 1126 { |
| 1115 return { color: "orange", title: WebInspector.UIString("Element state: % s", ":" + WebInspector.CSSModel.fromNode(node).pseudoState(node).join(", :")) }; | 1127 return { color: "orange", title: WebInspector.UIString("Element state: % s", ":" + WebInspector.CSSModel.fromNode(node).pseudoState(node).join(", :")) }; |
| 1116 } | 1128 } |
| 1117 } | 1129 } |
| OLD | NEW |