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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js

Issue 2369173002: DevTools: [Workspace] show network files in navigator (Closed)
Patch Set: simplify event listeners Created 4 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 10 *
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 this.element.addEventListener("contextmenu", this.handleContextMenu.bind(thi s), false); 55 this.element.addEventListener("contextmenu", this.handleContextMenu.bind(thi s), false);
56 56
57 this._navigatorGroupByFolderSetting = WebInspector.moduleSetting("navigatorG roupByFolder"); 57 this._navigatorGroupByFolderSetting = WebInspector.moduleSetting("navigatorG roupByFolder");
58 this._navigatorGroupByFolderSetting.addChangeListener(this._groupingChanged. bind(this)); 58 this._navigatorGroupByFolderSetting.addChangeListener(this._groupingChanged. bind(this));
59 59
60 this._initGrouping(); 60 this._initGrouping();
61 WebInspector.targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.FrameNavigated, this._frameNavigated, this ); 61 WebInspector.targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.FrameNavigated, this._frameNavigated, this );
62 WebInspector.targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.FrameDetached, this._frameDetached, this); 62 WebInspector.targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.Events.FrameDetached, this._frameDetached, this);
63 WebInspector.targetManager.observeTargets(this); 63 WebInspector.targetManager.observeTargets(this);
64 WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.Bi ndingCreated, this._onBindingCreated, this);
65 WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.Bi ndingRemoved, this._onBindingRemoved, this);
66 this._resetWorkspace(WebInspector.workspace); 64 this._resetWorkspace(WebInspector.workspace);
67 } 65 }
68 66
69 WebInspector.NavigatorView.Types = { 67 WebInspector.NavigatorView.Types = {
70 Category: "category", 68 Category: "category",
71 Domain: "domain", 69 Domain: "domain",
72 File: "file", 70 File: "file",
73 FileSystem: "fs", 71 FileSystem: "fs",
74 FileSystemFolder: "fs-folder", 72 FileSystemFolder: "fs-folder",
75 Frame: "frame", 73 Frame: "frame",
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 var searchLabel = WebInspector.UIString.capitalize("Search in ^folder"); 145 var searchLabel = WebInspector.UIString.capitalize("Search in ^folder");
148 if (!path || !path.trim()) { 146 if (!path || !path.trim()) {
149 path = "*"; 147 path = "*";
150 searchLabel = WebInspector.UIString.capitalize("Search in ^all ^files"); 148 searchLabel = WebInspector.UIString.capitalize("Search in ^all ^files");
151 } 149 }
152 contextMenu.appendItem(searchLabel, searchPath); 150 contextMenu.appendItem(searchLabel, searchPath);
153 } 151 }
154 152
155 WebInspector.NavigatorView.prototype = { 153 WebInspector.NavigatorView.prototype = {
156 /** 154 /**
157 * @param {!WebInspector.Event} event
158 */
159 _onBindingCreated: function(event)
160 {
161 var binding = /** @type {!WebInspector.PersistenceBinding} */(event.data );
162 // TODO(lushnikov): show network UISourceCodes in navigator.
163 this._removeUISourceCode(binding.network);
164 },
165
166 /**
167 * @param {!WebInspector.Event} event
168 */
169 _onBindingRemoved: function(event)
170 {
171 var binding = /** @type {!WebInspector.PersistenceBinding} */(event.data );
172 this._addUISourceCode(binding.network);
173 },
174
175 /**
176 * @override 155 * @override
177 */ 156 */
178 focus: function() 157 focus: function()
179 { 158 {
180 this._scriptsTree.focus(); 159 this._scriptsTree.focus();
181 }, 160 },
182 161
183 /** 162 /**
184 * @param {!WebInspector.Workspace} workspace 163 * @param {!WebInspector.Workspace} workspace
185 */ 164 */
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 }, 203 },
225 204
226 /** 205 /**
227 * @param {!WebInspector.UISourceCode} uiSourceCode 206 * @param {!WebInspector.UISourceCode} uiSourceCode
228 */ 207 */
229 _addUISourceCode: function(uiSourceCode) 208 _addUISourceCode: function(uiSourceCode)
230 { 209 {
231 if (!this.accept(uiSourceCode)) 210 if (!this.accept(uiSourceCode))
232 return; 211 return;
233 212
234 var binding = WebInspector.persistence.binding(uiSourceCode);
235 if (binding && binding.network === uiSourceCode)
236 return;
237
238 var isFromSourceMap = uiSourceCode.contentType().isFromSourceMap(); 213 var isFromSourceMap = uiSourceCode.contentType().isFromSourceMap();
239 var path; 214 var path;
240 if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSyst em) 215 if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSyst em)
241 path = WebInspector.FileSystemWorkspaceBinding.relativePath(uiSource Code).slice(0, -1); 216 path = WebInspector.FileSystemWorkspaceBinding.relativePath(uiSource Code).slice(0, -1);
242 else 217 else
243 path = WebInspector.ParsedURL.splitURLIntoPathComponents(uiSourceCod e.url()).slice(1, -1); 218 path = WebInspector.ParsedURL.splitURLIntoPathComponents(uiSourceCod e.url()).slice(1, -1);
244 219
245 var project = uiSourceCode.project(); 220 var project = uiSourceCode.project();
246 var target = WebInspector.NetworkProject.targetForUISourceCode(uiSourceC ode); 221 var target = WebInspector.NetworkProject.targetForUISourceCode(uiSourceC ode);
247 var frame = this._uiSourceCodeFrame(uiSourceCode); 222 var frame = this._uiSourceCodeFrame(uiSourceCode);
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 WebInspector.NavigatorView._treeElementsCompare = function compare(treeElement1, treeElement2) 799 WebInspector.NavigatorView._treeElementsCompare = function compare(treeElement1, treeElement2)
825 { 800 {
826 var typeWeight1 = WebInspector.NavigatorView._treeElementOrder(treeElement1) ; 801 var typeWeight1 = WebInspector.NavigatorView._treeElementOrder(treeElement1) ;
827 var typeWeight2 = WebInspector.NavigatorView._treeElementOrder(treeElement2) ; 802 var typeWeight2 = WebInspector.NavigatorView._treeElementOrder(treeElement2) ;
828 803
829 var result; 804 var result;
830 if (typeWeight1 > typeWeight2) 805 if (typeWeight1 > typeWeight2)
831 return 1; 806 return 1;
832 if (typeWeight1 < typeWeight2) 807 if (typeWeight1 < typeWeight2)
833 return -1; 808 return -1;
834 var title1 = /** @type {string} */(treeElement1.title); 809 var title1 = /** @type {string} */(treeElement1.title instanceof Element ? t reeElement1.title.textContent : treeElement1.title);
dgozman 2016/09/27 17:08:47 titleAsText
lushnikov 2016/09/27 21:29:12 Done.
835 var title2 = /** @type {string} */(treeElement2.title); 810 var title2 = /** @type {string} */(treeElement2.title instanceof Element ? t reeElement2.title.textContent : treeElement2.title);
836 return title1.compareTo(title2); 811 return title1.compareTo(title2);
837 } 812 }
838 813
839 /** 814 /**
840 * @constructor 815 * @constructor
841 * @extends {TreeElement} 816 * @extends {TreeElement}
842 * @param {!WebInspector.NavigatorView} navigatorView 817 * @param {!WebInspector.NavigatorView} navigatorView
843 * @param {string} type 818 * @param {string} type
844 * @param {string} title 819 * @param {string} title
845 * @param {function(boolean)=} hoverCallback 820 * @param {function(boolean)=} hoverCallback
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 * @extends {WebInspector.NavigatorTreeNode} 1219 * @extends {WebInspector.NavigatorTreeNode}
1245 * @param {!WebInspector.NavigatorView} navigatorView 1220 * @param {!WebInspector.NavigatorView} navigatorView
1246 * @param {!WebInspector.UISourceCode} uiSourceCode 1221 * @param {!WebInspector.UISourceCode} uiSourceCode
1247 */ 1222 */
1248 WebInspector.NavigatorUISourceCodeTreeNode = function(navigatorView, uiSourceCod e) 1223 WebInspector.NavigatorUISourceCodeTreeNode = function(navigatorView, uiSourceCod e)
1249 { 1224 {
1250 WebInspector.NavigatorTreeNode.call(this, uiSourceCode.project().id() + ":" + uiSourceCode.url(), WebInspector.NavigatorView.Types.File); 1225 WebInspector.NavigatorTreeNode.call(this, uiSourceCode.project().id() + ":" + uiSourceCode.url(), WebInspector.NavigatorView.Types.File);
1251 this._navigatorView = navigatorView; 1226 this._navigatorView = navigatorView;
1252 this._uiSourceCode = uiSourceCode; 1227 this._uiSourceCode = uiSourceCode;
1253 this._treeElement = null; 1228 this._treeElement = null;
1229 this._eventListeners = [];
1254 } 1230 }
1255 1231
1256 WebInspector.NavigatorUISourceCodeTreeNode.prototype = { 1232 WebInspector.NavigatorUISourceCodeTreeNode.prototype = {
1257 /** 1233 /**
1258 * @return {!WebInspector.UISourceCode} 1234 * @return {!WebInspector.UISourceCode}
1259 */ 1235 */
1260 uiSourceCode: function() 1236 uiSourceCode: function()
1261 { 1237 {
1262 return this._uiSourceCode; 1238 return this._uiSourceCode;
1263 }, 1239 },
1264 1240
1265 /** 1241 /**
1266 * @override 1242 * @override
1267 * @return {!TreeElement} 1243 * @return {!TreeElement}
1268 */ 1244 */
1269 treeNode: function() 1245 treeNode: function()
1270 { 1246 {
1271 if (this._treeElement) 1247 if (this._treeElement)
1272 return this._treeElement; 1248 return this._treeElement;
1273 1249
1274 this._treeElement = new WebInspector.NavigatorSourceTreeElement(this._na vigatorView, this._uiSourceCode, ""); 1250 this._treeElement = new WebInspector.NavigatorSourceTreeElement(this._na vigatorView, this._uiSourceCode, "");
1275 this.updateTitle(); 1251 this.updateTitle();
1276 1252
1277 this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.Tit leChanged, this._titleChanged, this); 1253 var updateTitleBound = this.updateTitle.bind(this, undefined);
1278 this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.Wor kingCopyChanged, this._workingCopyChanged, this); 1254 this._eventListeners = [
1279 this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.Wor kingCopyCommitted, this._workingCopyCommitted, this); 1255 this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events .TitleChanged, updateTitleBound),
1280 1256 this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events .WorkingCopyChanged, updateTitleBound),
1257 this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events .WorkingCopyCommitted, updateTitleBound),
1258 WebInspector.persistence.addEventListener(WebInspector.Persistence.E vents.BindingCreated, updateTitleBound),
dgozman 2016/09/27 17:08:47 Should not listen for this on every tree node.
lushnikov 2016/09/27 21:29:12 Done.
1259 WebInspector.persistence.addEventListener(WebInspector.Persistence.E vents.BindingRemoved, updateTitleBound)
1260 ];
1281 return this._treeElement; 1261 return this._treeElement;
1282 }, 1262 },
1283 1263
1284 /** 1264 /**
1285 * @param {boolean=} ignoreIsDirty 1265 * @param {boolean=} ignoreIsDirty
1286 */ 1266 */
1287 updateTitle: function(ignoreIsDirty) 1267 updateTitle: function(ignoreIsDirty)
1288 { 1268 {
1289 if (!this._treeElement) 1269 if (!this._treeElement)
1290 return; 1270 return;
1291 1271
1292 var titleText = this._uiSourceCode.displayName(); 1272 var titleText = this._uiSourceCode.displayName();
1293 if (!ignoreIsDirty && (this._uiSourceCode.isDirty() || WebInspector.pers istence.hasUnsavedCommittedChanges(this._uiSourceCode))) 1273 if (!ignoreIsDirty && (this._uiSourceCode.isDirty() || WebInspector.pers istence.hasUnsavedCommittedChanges(this._uiSourceCode)))
1294 titleText = "*" + titleText; 1274 titleText = "*" + titleText;
1295 this._treeElement.title = titleText; 1275
1276 var binding = WebInspector.persistence.binding(this._uiSourceCode);
1277 if (binding) {
1278 var titleElement = createElement("span");
1279 titleElement.textContent = titleText;
1280 var status = titleElement.createChild("span");
1281 status.classList.add("mapped-file-bubble");
1282 status.textContent = "â—‰";
dgozman 2016/09/27 17:08:47 \uxxxx
lushnikov 2016/09/27 21:29:12 Done.
1283 if (this._uiSourceCode === binding.network)
dgozman 2016/09/27 17:08:47 Let's trim urls.
lushnikov 2016/09/27 21:29:12 Done.
1284 status.title = WebInspector.UIString("Mapped to fileSystem: %s", binding.fileSystem.url());
dgozman 2016/09/27 17:08:47 Persisted to file system: %s
lushnikov 2016/09/27 21:29:13 Done.
1285 else if (binding.network.contentType().isFromSourceMap())
1286 status.title = WebInspector.UIString("Mapped to source map: %s", binding.network.url());
dgozman 2016/09/27 17:08:47 Linked to source map: %s
lushnikov 2016/09/27 21:29:12 Done.
1287 else
1288 status.title = WebInspector.UIString("Mapped to network: %s", bi nding.network.url());
dgozman 2016/09/27 17:08:47 Linked to %s
lushnikov 2016/09/27 21:29:12 Done.
1289 this._treeElement.title = titleElement;
1290 } else {
1291 this._treeElement.title = titleText;
1292 }
1296 1293
1297 var tooltip = this._uiSourceCode.url(); 1294 var tooltip = this._uiSourceCode.url();
1298 if (this._uiSourceCode.contentType().isFromSourceMap()) 1295 if (this._uiSourceCode.contentType().isFromSourceMap())
1299 tooltip = WebInspector.UIString("%s (from source map)", this._uiSour ceCode.displayName()); 1296 tooltip = WebInspector.UIString("%s (from source map)", this._uiSour ceCode.displayName());
1300 this._treeElement.tooltip = tooltip; 1297 this._treeElement.tooltip = tooltip;
1301 }, 1298 },
1302 1299
1303 /** 1300 /**
1304 * @override 1301 * @override
1305 * @return {boolean} 1302 * @return {boolean}
1306 */ 1303 */
1307 hasChildren: function() 1304 hasChildren: function()
1308 { 1305 {
1309 return false; 1306 return false;
1310 }, 1307 },
1311 1308
1312 dispose: function() 1309 dispose: function()
1313 { 1310 {
1314 if (!this._treeElement) 1311 WebInspector.EventTarget.removeEventListeners(this._eventListeners);
1315 return;
1316 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. TitleChanged, this._titleChanged, this);
1317 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. WorkingCopyChanged, this._workingCopyChanged, this);
1318 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. WorkingCopyCommitted, this._workingCopyCommitted, this);
1319 },
1320
1321 _titleChanged: function(event)
1322 {
1323 this.updateTitle();
1324 },
1325
1326 _workingCopyChanged: function(event)
1327 {
1328 this.updateTitle();
1329 },
1330
1331 _workingCopyCommitted: function(event)
1332 {
1333 this.updateTitle();
1334 }, 1312 },
1335 1313
1336 /** 1314 /**
1337 * @param {boolean=} select 1315 * @param {boolean=} select
1338 */ 1316 */
1339 reveal: function(select) 1317 reveal: function(select)
1340 { 1318 {
1341 this.parent.populate(); 1319 this.parent.populate();
1342 this.parent.treeNode().expand(); 1320 this.parent.treeNode().expand();
1343 this._treeElement.reveal(); 1321 this._treeElement.reveal();
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 * @param {string} type 1395 * @param {string} type
1418 * @param {string} folderPath 1396 * @param {string} folderPath
1419 * @param {string} title 1397 * @param {string} title
1420 */ 1398 */
1421 WebInspector.NavigatorFolderTreeNode = function(navigatorView, project, id, type , folderPath, title) 1399 WebInspector.NavigatorFolderTreeNode = function(navigatorView, project, id, type , folderPath, title)
1422 { 1400 {
1423 WebInspector.NavigatorTreeNode.call(this, id, type); 1401 WebInspector.NavigatorTreeNode.call(this, id, type);
1424 this._navigatorView = navigatorView; 1402 this._navigatorView = navigatorView;
1425 this._project = project; 1403 this._project = project;
1426 this._folderPath = folderPath; 1404 this._folderPath = folderPath;
1405 this._absoluteFileSystemPath = "";
1406 if (this._project.type() === WebInspector.projectTypes.FileSystem)
1407 this._absoluteFileSystemPath = WebInspector.FileSystemWorkspaceBinding.f ileSystemPath(this._project.id()) + "/" + this._folderPath;
1427 this._title = title; 1408 this._title = title;
1409 this._eventListeners = [];
1428 } 1410 }
1429 1411
1430 WebInspector.NavigatorFolderTreeNode.prototype = { 1412 WebInspector.NavigatorFolderTreeNode.prototype = {
1431 /** 1413 /**
1432 * @override 1414 * @override
1433 * @return {!TreeElement} 1415 * @return {!TreeElement}
1434 */ 1416 */
1435 treeNode: function() 1417 treeNode: function()
1436 { 1418 {
1437 if (this._treeElement) 1419 if (this._treeElement)
1438 return this._treeElement; 1420 return this._treeElement;
1439 this._treeElement = this._createTreeElement(this._title, this); 1421 this._treeElement = this._createTreeElement(this._title, this);
1422 if (this._project.type() === WebInspector.projectTypes.FileSystem) {
1423 this._eventListeners = [
1424 WebInspector.persistence.addEventListener(WebInspector.Persisten ce.Events.BindingCreated, this._updateHasMappedFiles, this),
dgozman 2016/09/27 17:08:47 Make it global.
lushnikov 2016/09/27 21:29:12 Done.
1425 WebInspector.persistence.addEventListener(WebInspector.Persisten ce.Events.BindingRemoved, this._updateHasMappedFiles, this)
1426 ];
1427 this._updateHasMappedFiles();
1428 }
1440 return this._treeElement; 1429 return this._treeElement;
1441 }, 1430 },
1442 1431
1432 _updateHasMappedFiles: function()
1433 {
1434 this._treeElement.listItemElement.classList.toggle("has-mapped-files", W ebInspector.persistence.filePathHasBindings(this._absoluteFileSystemPath));
1435 },
1436
1443 /** 1437 /**
1444 * @return {!TreeElement} 1438 * @return {!TreeElement}
1445 */ 1439 */
1446 _createTreeElement: function(title, node) 1440 _createTreeElement: function(title, node)
1447 { 1441 {
1448 if (this._project.type() !== WebInspector.projectTypes.FileSystem) { 1442 if (this._project.type() !== WebInspector.projectTypes.FileSystem) {
1449 try { 1443 try {
1450 title = decodeURI(title); 1444 title = decodeURI(title);
1451 } catch (e) { 1445 } catch (e) {
1452 } 1446 }
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1552 * @override 1546 * @override
1553 * @param {!WebInspector.NavigatorTreeNode} node 1547 * @param {!WebInspector.NavigatorTreeNode} node
1554 */ 1548 */
1555 willRemoveChild: function(node) 1549 willRemoveChild: function(node)
1556 { 1550 {
1557 if (node._isMerged || !this.isPopulated()) 1551 if (node._isMerged || !this.isPopulated())
1558 return; 1552 return;
1559 this._treeElement.removeChild(node._treeElement); 1553 this._treeElement.removeChild(node._treeElement);
1560 }, 1554 },
1561 1555
1556 dispose: function()
1557 {
1558 WebInspector.EventTarget.removeEventListeners(this._eventListeners);
1559 },
1560
1562 __proto__: WebInspector.NavigatorTreeNode.prototype 1561 __proto__: WebInspector.NavigatorTreeNode.prototype
1563 } 1562 }
1564 1563
1565 /** 1564 /**
1566 * @constructor 1565 * @constructor
1567 * @extends {WebInspector.NavigatorTreeNode} 1566 * @extends {WebInspector.NavigatorTreeNode}
1568 * @param {!WebInspector.NavigatorView} navigatorView 1567 * @param {!WebInspector.NavigatorView} navigatorView
1569 * @param {!WebInspector.Project} project 1568 * @param {!WebInspector.Project} project
1570 * @param {string} id 1569 * @param {string} id
1571 * @param {string} type 1570 * @param {string} type
1572 * @param {string} title 1571 * @param {string} title
1573 */ 1572 */
1574 WebInspector.NavigatorGroupTreeNode = function(navigatorView, project, id, type, title) 1573 WebInspector.NavigatorGroupTreeNode = function(navigatorView, project, id, type, title)
1575 { 1574 {
1576 WebInspector.NavigatorTreeNode.call(this, id, type); 1575 WebInspector.NavigatorTreeNode.call(this, id, type);
1577 this._project = project; 1576 this._project = project;
1578 this._navigatorView = navigatorView; 1577 this._navigatorView = navigatorView;
1579 this._title = title; 1578 this._title = title;
1579 this._eventListeners = [];
1580 this.populate(); 1580 this.populate();
1581 } 1581 }
1582 1582
1583 WebInspector.NavigatorGroupTreeNode.prototype = { 1583 WebInspector.NavigatorGroupTreeNode.prototype = {
1584 /** 1584 /**
1585 * @param {function(boolean)} hoverCallback 1585 * @param {function(boolean)} hoverCallback
1586 */ 1586 */
1587 setHoverCallback: function(hoverCallback) 1587 setHoverCallback: function(hoverCallback)
1588 { 1588 {
1589 this._hoverCallback = hoverCallback; 1589 this._hoverCallback = hoverCallback;
1590 }, 1590 },
1591 1591
1592 /** 1592 /**
1593 * @override 1593 * @override
1594 * @return {!TreeElement} 1594 * @return {!TreeElement}
1595 */ 1595 */
1596 treeNode: function() 1596 treeNode: function()
1597 { 1597 {
1598 if (this._treeElement) 1598 if (this._treeElement)
1599 return this._treeElement; 1599 return this._treeElement;
1600 this._treeElement = new WebInspector.NavigatorFolderTreeElement(this._na vigatorView, this._type, this._title, this._hoverCallback); 1600 this._treeElement = new WebInspector.NavigatorFolderTreeElement(this._na vigatorView, this._type, this._title, this._hoverCallback);
1601 this._treeElement.setNode(this); 1601 this._treeElement.setNode(this);
1602 if (this._project.type() === WebInspector.projectTypes.FileSystem) {
1603 this._eventListeners = [
1604 WebInspector.persistence.addEventListener(WebInspector.Persisten ce.Events.BindingCreated, this._updateHasMappedFiles, this),
dgozman 2016/09/27 17:08:47 ditto
lushnikov 2016/09/27 21:29:12 Done.
1605 WebInspector.persistence.addEventListener(WebInspector.Persisten ce.Events.BindingRemoved, this._updateHasMappedFiles, this)
1606 ];
1607 this._updateHasMappedFiles();
1608 }
1602 return this._treeElement; 1609 return this._treeElement;
1603 }, 1610 },
1604 1611
1612 _updateHasMappedFiles: function()
1613 {
1614 var fileSystemPath = WebInspector.FileSystemWorkspaceBinding.fileSystemP ath(this._project.id());
1615 var wasActive = this._treeElement.listItemElement.classList.contains("ha s-mapped-files");
1616 var isActive = WebInspector.persistence.filePathHasBindings(fileSystemPa th);
1617 if (wasActive === isActive)
1618 return;
1619 this._treeElement.listItemElement.classList.toggle("has-mapped-files", i sActive);
1620 if (isActive)
1621 this._treeElement.expand();
1622 else
1623 this._treeElement.collapse();
1624 },
1625
1626 dispose: function()
dgozman 2016/09/27 17:08:47 @override ?
lushnikov 2016/09/27 21:29:12 Done.
1627 {
1628 WebInspector.EventTarget.removeEventListeners(this._eventListeners);
1629 },
1630
1605 __proto__: WebInspector.NavigatorTreeNode.prototype 1631 __proto__: WebInspector.NavigatorTreeNode.prototype
1606 } 1632 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698