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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/bindings/SASSSourceMapping.js

Issue 2779703004: DevTools: carefully cleanup CSS sourcemaps (Closed)
Patch Set: fix tests Created 3 years, 8 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 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 this._networkProject = networkProject; 42 this._networkProject = networkProject;
43 this._workspace = workspace; 43 this._workspace = workspace;
44 this._eventListeners = [ 44 this._eventListeners = [
45 this._sourceMapManager.addEventListener( 45 this._sourceMapManager.addEventListener(
46 SDK.SourceMapManager.Events.SourceMapAttached, this._sourceMapAttached , this), 46 SDK.SourceMapManager.Events.SourceMapAttached, this._sourceMapAttached , this),
47 this._sourceMapManager.addEventListener( 47 this._sourceMapManager.addEventListener(
48 SDK.SourceMapManager.Events.SourceMapDetached, this._sourceMapDetached , this), 48 SDK.SourceMapManager.Events.SourceMapDetached, this._sourceMapDetached , this),
49 this._sourceMapManager.addEventListener( 49 this._sourceMapManager.addEventListener(
50 SDK.SourceMapManager.Events.SourceMapChanged, this._sourceMapChanged, this) 50 SDK.SourceMapManager.Events.SourceMapChanged, this._sourceMapChanged, this)
51 ]; 51 ];
52
53 /** @type {!Multimap<string, !SDK.CSSStyleSheetHeader>} */
54 this._frameIdToHeaders = new Multimap();
52 } 55 }
53 56
54 /** 57 /**
55 * @param {?SDK.SourceMap} sourceMap 58 * @param {?SDK.SourceMap} sourceMap
56 */ 59 */
57 _sourceMapAttachedForTest(sourceMap) { 60 _sourceMapAttachedForTest(sourceMap) {
58 } 61 }
59 62
60 /** 63 /**
61 * @param {!Common.Event} event 64 * @param {!Common.Event} event
62 */ 65 */
63 _sourceMapAttached(event) { 66 _sourceMapAttached(event) {
64 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); 67 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data.client);
65 var sourceMap = this._sourceMapManager.sourceMapForClient(header); 68 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap);
69 if (this._frameIdToHeaders.has(header.frameId)) {
70 this._frameIdToHeaders.set(header.frameId, header);
71 this._sourceMapAttachedForTest(sourceMap);
72 return;
73 }
74 this._frameIdToHeaders.set(header.frameId, header);
75
66 for (var sassURL of sourceMap.sourceURLs()) { 76 for (var sassURL of sourceMap.sourceURLs()) {
67 var contentProvider = sourceMap.sourceContentProvider(sassURL, Common.reso urceTypes.SourceMapStyleSheet); 77 var contentProvider = sourceMap.sourceContentProvider(sassURL, Common.reso urceTypes.SourceMapStyleSheet);
68 var embeddedContent = sourceMap.embeddedContentByURL(sassURL); 78 var embeddedContent = sourceMap.embeddedContentByURL(sassURL);
69 var embeddedContentLength = typeof embeddedContent === 'string' ? embedded Content.length : null; 79 var embeddedContentLength = typeof embeddedContent === 'string' ? embedded Content.length : null;
70 this._networkProject.addSourceMapFile(contentProvider, header.frameId, fal se, embeddedContentLength); 80 this._networkProject.addSourceMapFile(contentProvider, header.frameId, fal se, embeddedContentLength);
71 } 81 }
72 Bindings.cssWorkspaceBinding.updateLocations(header); 82 Bindings.cssWorkspaceBinding.updateLocations(header);
73 this._sourceMapAttachedForTest(sourceMap); 83 this._sourceMapAttachedForTest(sourceMap);
74 } 84 }
75 85
76 /** 86 /**
77 * @param {!Common.Event} event 87 * @param {!Common.Event} event
78 */ 88 */
79 _sourceMapDetached(event) { 89 _sourceMapDetached(event) {
80 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); 90 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data.client);
91 this._frameIdToHeaders.remove(header.frameId, header);
92 if (this._frameIdToHeaders.has(header.frameId))
93 return;
94 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap);
95 for (var sassURL of sourceMap.sourceURLs())
96 this._networkProject.removeSourceMapFile(sassURL, header.frameId, false);
81 Bindings.cssWorkspaceBinding.updateLocations(header); 97 Bindings.cssWorkspaceBinding.updateLocations(header);
82 } 98 }
83 99
84 /** 100 /**
85 * @param {!Common.Event} event 101 * @param {!Common.Event} event
86 */ 102 */
87 _sourceMapChanged(event) { 103 _sourceMapChanged(event) {
88 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap); 104 var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap);
89 var newSources = /** @type {!Map<string, string>} */ (event.data.newSources) ; 105 var newSources = /** @type {!Map<string, string>} */ (event.data.newSources) ;
90 var headers = this._sourceMapManager.clientsForSourceMap(sourceMap); 106 var headers = this._sourceMapManager.clientsForSourceMap(sourceMap);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 var uiSourceCode = Bindings.NetworkProject.uiSourceCodeForStyleURL(this._wor kspace, entry.sourceURL, header); 139 var uiSourceCode = Bindings.NetworkProject.uiSourceCodeForStyleURL(this._wor kspace, entry.sourceURL, header);
124 if (!uiSourceCode) 140 if (!uiSourceCode)
125 return null; 141 return null;
126 return uiSourceCode.uiLocation(entry.sourceLineNumber || 0, entry.sourceColu mnNumber); 142 return uiSourceCode.uiLocation(entry.sourceLineNumber || 0, entry.sourceColu mnNumber);
127 } 143 }
128 144
129 dispose() { 145 dispose() {
130 Common.EventTarget.removeEventListeners(this._eventListeners); 146 Common.EventTarget.removeEventListeners(this._eventListeners);
131 } 147 }
132 }; 148 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698