Title: [97063] trunk
Revision
97063
Author
podivi...@chromium.org
Date
2011-10-10 09:09:22 -0700 (Mon, 10 Oct 2011)

Log Message

Web Inspector: RawSourceCode could be mapped to multiple sources.
https://bugs.webkit.org/show_bug.cgi?id=68526

Source/WebCore:

Replace SourceMapping.uiSourceCode with SourceMapping.uiSourceCodeList as there could be more
then one UISourceCode associated with a RawSourceCode.

Reviewed by Pavel Feldman.

* inspector/front-end/DebuggerPresentationModel.js:
(WebInspector.DebuggerPresentationModel.prototype._sourceMappingUpdated):
(WebInspector.DebuggerPresentationModel.prototype._updateSourceMapping):
(WebInspector.DebuggerPresentationModel.prototype._restoreBreakpoints):
(WebInspector.PresentationCallFrame.prototype.get url):
(WebInspector.DebuggerPresentationModelResourceBinding.prototype.canSetContent):
(WebInspector.DebuggerPresentationModelResourceBinding.prototype.setContent):
* inspector/front-end/ScriptsPanel.js:
(WebInspector.ScriptsPanel.prototype._uiSourceCodeReplaced):
* inspector/front-end/SourceFile.js:
(WebInspector.RawSourceCode.prototype._saveSourceMapping):
(WebInspector.RawSourceCode.PlainSourceMapping):
(WebInspector.RawSourceCode.PlainSourceMapping.prototype.rawLocationToUILocation):
(WebInspector.RawSourceCode.PlainSourceMapping.prototype.uiSourceCodeList):
(WebInspector.RawSourceCode.FormattedSourceMapping):
(WebInspector.RawSourceCode.FormattedSourceMapping.prototype.rawLocationToUILocation):
(WebInspector.RawSourceCode.FormattedSourceMapping.prototype.uiSourceCodeList):

LayoutTests:

Reviewed by Pavel Feldman.

* inspector/debugger/raw-source-code.html:
* inspector/debugger/scripts-panel.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (97062 => 97063)


--- trunk/LayoutTests/ChangeLog	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/LayoutTests/ChangeLog	2011-10-10 16:09:22 UTC (rev 97063)
@@ -1,3 +1,13 @@
+2011-09-28  Pavel Podivilov  <podivi...@chromium.org>
+
+        Web Inspector: RawSourceCode could be mapped to multiple sources.
+        https://bugs.webkit.org/show_bug.cgi?id=68526
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/debugger/raw-source-code.html:
+        * inspector/debugger/scripts-panel.html:
+
 2011-10-10  Zsolt Fehér  <fehe...@inf.u-szeged.hu>
 
         Unreviewed gardening after r96958.

Modified: trunk/LayoutTests/inspector/debugger/raw-source-code.html (97062 => 97063)


--- trunk/LayoutTests/inspector/debugger/raw-source-code.html	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/LayoutTests/inspector/debugger/raw-source-code.html	2011-10-10 16:09:22 UTC (rev 97063)
@@ -106,7 +106,8 @@
             var rawSourceCode = createRawSourceCode(script, null);
 
             var sourceMapping = rawSourceCode.sourceMapping;
-            var uiSourceCode = sourceMapping.uiSourceCode;
+            InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+            var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
             InspectorTest.assertEquals("foo.js", uiSourceCode.url);
             InspectorTest.assertEquals(true, uiSourceCode.isContentScript);
             InspectorTest.assertEquals(rawSourceCode, uiSourceCode.rawSourceCode);
@@ -136,7 +137,9 @@
             function mappingReady(event)
             {
                 InspectorTest.assertTrue(!event.data.oldSourceCode);
-                var uiSourceCode = rawSourceCode.sourceMapping.uiSourceCode;
+                var sourceMapping = rawSourceCode.sourceMapping;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
                 InspectorTest.assertEquals("index.html", uiSourceCode.url);
                 InspectorTest.assertEquals(false, uiSourceCode.isContentScript);
                 uiSourceCode.requestContent(didRequestContent);
@@ -161,7 +164,8 @@
             var rawSourceCode = createRawSourceCode(script1, resource);
 
             var sourceMapping = rawSourceCode.sourceMapping;
-            var uiSourceCode = sourceMapping.uiSourceCode;
+            InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+            var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
             InspectorTest.assertEquals("index.html", uiSourceCode.url);
             InspectorTest.assertEquals(false, uiSourceCode.isContentScript);
             uiSourceCode.requestContent(didRequestContent);
@@ -195,7 +199,10 @@
 
             function requestContent()
             {
-                rawSourceCode.sourceMapping.uiSourceCode.requestContent(didRequestContentOneScript);
+                var sourceMapping = rawSourceCode.sourceMapping;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
+                uiSourceCode.requestContent(didRequestContentOneScript);
             }
 
             function didRequestContentOneScript(mimeType, content)
@@ -211,7 +218,10 @@
 
             function requestContentTwoScripts()
             {
-                rawSourceCode.sourceMapping.uiSourceCode.requestContent(didRequestContentTwoScripts);
+                var sourceMapping = rawSourceCode.sourceMapping;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
+                uiSourceCode.requestContent(didRequestContentTwoScripts);
             }
 
             function didRequestContentTwoScripts(mimeType, content)
@@ -226,7 +236,10 @@
 
             function requestContentResource()
             {
-                rawSourceCode.sourceMapping.uiSourceCode.requestContent(didRequestContentResource);
+                var sourceMapping = rawSourceCode.sourceMapping;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
+                uiSourceCode.requestContent(didRequestContentResource);
             }
 
             function didRequestContentResource(mimeType, content)
@@ -248,7 +261,8 @@
             var rawSourceCode = createRawSourceCode(script, resource, false);
 
             var sourceMapping = rawSourceCode.sourceMapping;
-            var uiSourceCode = sourceMapping.uiSourceCode;
+            InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+            var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
             checkUILocation(uiSourceCode, 1, 2, sourceMapping.rawLocationToUILocation(createRawLocation(1, 2)));
             checkRawLocation(script, 2, 0, sourceMapping.uiLocationToRawLocation(uiSourceCode, 2));
             uiSourceCode.requestContent(didRequestContent);
@@ -266,7 +280,8 @@
             function requestFormattedContent()
             {
                 var sourceMapping = rawSourceCode.sourceMapping;
-                var uiSourceCode = sourceMapping.uiSourceCode;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
                 checkUILocation(uiSourceCode, 2, 4, sourceMapping.rawLocationToUILocation(createRawLocation(1, 2)));
                 checkRawLocation(script, 1, 0, sourceMapping.uiLocationToRawLocation(uiSourceCode, 2));
                 uiSourceCode.requestContent(didRequestFormattedContent);
@@ -284,7 +299,8 @@
             function requestNotFormattedContent()
             {
                 var sourceMapping = rawSourceCode.sourceMapping;
-                var uiSourceCode = sourceMapping.uiSourceCode;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
                 checkUILocation(uiSourceCode, 1, 2, sourceMapping.rawLocationToUILocation(createRawLocation(1, 2)));
                 checkRawLocation(script, 2, 0, sourceMapping.uiLocationToRawLocation(uiSourceCode, 2));
                 uiSourceCode.requestContent(didRequestNotFormattedContent);
@@ -313,7 +329,8 @@
             function checkMapping()
             {
                 var sourceMapping = rawSourceCode.sourceMapping;
-                var uiSourceCode = sourceMapping.uiSourceCode;
+                InspectorTest.assertEquals(1, sourceMapping.uiSourceCodeList().length);
+                var uiSourceCode = sourceMapping.uiSourceCodeList()[0];
                 checkUILocation(uiSourceCode, 2, 4, sourceMapping.rawLocationToUILocation(createRawLocation(1, 2)));
                 checkRawLocation(script, 1, 0, sourceMapping.uiLocationToRawLocation(uiSourceCode, 2));
                 next();

Modified: trunk/LayoutTests/inspector/debugger/scripts-panel.html (97062 => 97063)


--- trunk/LayoutTests/inspector/debugger/scripts-panel.html	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/LayoutTests/inspector/debugger/scripts-panel.html	2011-10-10 16:09:22 UTC (rev 97063)
@@ -167,7 +167,7 @@
 
             addUISouceCode(model, "foo.js");
             var uiSourceCode = addUISouceCode(model, "bar.js");
-            panel._uiSourceCodeReplaced({ data: { oldUISourceCode: uiSourceCode, uiSourceCode: uiSourceCode }});
+            panel._uiSourceCodeReplaced({ data: { oldUISourceCodeList: [uiSourceCode], uiSourceCodeList: [uiSourceCode] }});
             showSourceFrame(panel, "bar.js");
             next();
         }

Modified: trunk/Source/WebCore/ChangeLog (97062 => 97063)


--- trunk/Source/WebCore/ChangeLog	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/Source/WebCore/ChangeLog	2011-10-10 16:09:22 UTC (rev 97063)
@@ -1,3 +1,31 @@
+2011-09-28  Pavel Podivilov  <podivi...@chromium.org>
+
+        Web Inspector: RawSourceCode could be mapped to multiple sources.
+        https://bugs.webkit.org/show_bug.cgi?id=68526
+
+        Replace SourceMapping.uiSourceCode with SourceMapping.uiSourceCodeList as there could be more
+        then one UISourceCode associated with a RawSourceCode.
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/front-end/DebuggerPresentationModel.js:
+        (WebInspector.DebuggerPresentationModel.prototype._sourceMappingUpdated):
+        (WebInspector.DebuggerPresentationModel.prototype._updateSourceMapping):
+        (WebInspector.DebuggerPresentationModel.prototype._restoreBreakpoints):
+        (WebInspector.PresentationCallFrame.prototype.get url):
+        (WebInspector.DebuggerPresentationModelResourceBinding.prototype.canSetContent):
+        (WebInspector.DebuggerPresentationModelResourceBinding.prototype.setContent):
+        * inspector/front-end/ScriptsPanel.js:
+        (WebInspector.ScriptsPanel.prototype._uiSourceCodeReplaced):
+        * inspector/front-end/SourceFile.js:
+        (WebInspector.RawSourceCode.prototype._saveSourceMapping):
+        (WebInspector.RawSourceCode.PlainSourceMapping):
+        (WebInspector.RawSourceCode.PlainSourceMapping.prototype.rawLocationToUILocation):
+        (WebInspector.RawSourceCode.PlainSourceMapping.prototype.uiSourceCodeList):
+        (WebInspector.RawSourceCode.FormattedSourceMapping):
+        (WebInspector.RawSourceCode.FormattedSourceMapping.prototype.rawLocationToUILocation):
+        (WebInspector.RawSourceCode.FormattedSourceMapping.prototype.uiSourceCodeList):
+
 2011-10-10  Andreas Kling  <kl...@webkit.org>
 
         Shrink RenderLayer and ScrollableArea.

Modified: trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js (97062 => 97063)


--- trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js	2011-10-10 16:09:22 UTC (rev 97063)
@@ -123,40 +123,48 @@
     _sourceMappingUpdated: function(event)
     {
         var rawSourceCode = event.target;
-        var oldUISourceCode = event.data.oldUISourceCode;
-        this._updateSourceMapping(rawSourceCode, oldUISourceCode);
+        var oldSourceMapping = event.data.oldSourceMapping;
+        this._updateSourceMapping(rawSourceCode, oldSourceMapping);
     },
 
-    _updateSourceMapping: function(rawSourceCode, oldUISourceCode)
+    _updateSourceMapping: function(rawSourceCode, oldSourceMapping)
     {
-        if (oldUISourceCode) {
-            var breakpoints = this._breakpointManager.breakpointsForUISourceCode(oldUISourceCode);
-            for (var lineNumber in breakpoints) {
-                var breakpoint = breakpoints[lineNumber];
-                this._breakpointRemoved(breakpoint);
-                delete breakpoint.uiSourceCode;
+        if (oldSourceMapping) {
+            var oldUISourceCodeList = oldSourceMapping.uiSourceCodeList();
+            for (var i = 0; i < oldUISourceCodeList.length; ++i) {
+                var breakpoints = this._breakpointManager.breakpointsForUISourceCode(oldUISourceCodeList[i]);
+                for (var lineNumber in breakpoints) {
+                    var breakpoint = breakpoints[lineNumber];
+                    this._breakpointRemoved(breakpoint);
+                    delete breakpoint.uiSourceCode;
+                }
             }
         }
 
         this._restoreBreakpoints(rawSourceCode);
         this._restoreConsoleMessages(rawSourceCode);
 
-        var uiSourceCode = rawSourceCode.sourceMapping.uiSourceCode;
-        if (!oldUISourceCode)
-            this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UISourceCodeAdded, uiSourceCode);
-        else {
-            var eventData = { uiSourceCode: uiSourceCode, oldUISourceCode: oldUISourceCode };
+        if (!oldSourceMapping) {
+            var uiSourceCodeList = rawSourceCode.sourceMapping.uiSourceCodeList();
+            for (var i = 0; i < uiSourceCodeList.length; ++i)
+                this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UISourceCodeAdded, uiSourceCodeList[i]);
+        } else {
+            var eventData = { uiSourceCodeList: rawSourceCode.sourceMapping.uiSourceCodeList(), oldUISourceCodeList: oldSourceMapping.uiSourceCodeList() };
             this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UISourceCodeReplaced, eventData);
         }
     },
 
     _restoreBreakpoints: function(rawSourceCode)
     {
-        var uiSourceCode = rawSourceCode.sourceMapping.uiSourceCode;
-        this._breakpointManager.uiSourceCodeAdded(uiSourceCode);
-        var breakpoints = this._breakpointManager.breakpointsForUISourceCode(uiSourceCode);
-        for (var lineNumber in breakpoints)
-            this._breakpointAdded(breakpoints[lineNumber]);
+        var uiSourceCodeList = rawSourceCode.sourceMapping.uiSourceCodeList();
+        for (var i = 0; i < uiSourceCodeList.length; ++i) {
+            var uiSourceCode = uiSourceCodeList[i];
+            this._breakpointManager.uiSourceCodeAdded(uiSourceCode);
+            var breakpoints = this._breakpointManager.breakpointsForUISourceCode(uiSourceCode);
+            for (var lineNumber in breakpoints)
+                this._breakpointAdded(breakpoints[lineNumber]);
+        }
+
     },
 
     _restoreConsoleMessages: function(rawSourceCode)
@@ -432,9 +440,13 @@
     _debuggerReset: function()
     {
         for (var id in this._rawSourceCode) {
-            if (this._rawSourceCode[id].sourceMapping && this._rawSourceCode[id].sourceMapping.uiSourceCode)
-                this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UISourceCodeRemoved, this._rawSourceCode[id].sourceMapping.uiSourceCode);
-            this._rawSourceCode[id].removeAllListeners();
+            var rawSourceCode = this._rawSourceCode[id];
+            if (rawSourceCode.sourceMapping) {
+                var uiSourceCodeList = rawSourceCode.sourceMapping.uiSourceCodeList();
+                for (var i = 0; i < uiSourceCodeList.length; ++i)
+                    this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UISourceCodeRemoved, uiSourceCodeList[i]);
+            }
+            rawSourceCode.removeAllListeners();
         }
         this._rawSourceCode = {};
         this._presentationCallFrames = [];
@@ -530,7 +542,7 @@
         var rawSourceCode = this._presentationModel._rawSourceCodeForScriptWithURL(resource.url)
         if (!rawSourceCode)
             return false;
-        return this._presentationModel.canEditScriptSource(rawSourceCode.sourceMapping.uiSourceCode);
+        return this._presentationModel.canEditScriptSource(rawSourceCode.sourceMapping.uiSourceCodeList()[0]);
     },
 
     setContent: function(resource, content, majorChange, userCallback)
@@ -544,7 +556,7 @@
             return;
         }
 
-        resource.requestContent(this._setContentWithInitialContent.bind(this, rawSourceCode.sourceMapping.uiSourceCode, content, userCallback));
+        resource.requestContent(this._setContentWithInitialContent.bind(this, rawSourceCode.sourceMapping.uiSourceCodeList()[0], content, userCallback));
     },
 
     _setContentWithInitialContent: function(uiSourceCode, content, userCallback, oldContent)

Modified: trunk/Source/WebCore/inspector/front-end/RawSourceCode.js (97062 => 97063)


--- trunk/Source/WebCore/inspector/front-end/RawSourceCode.js	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/Source/WebCore/inspector/front-end/RawSourceCode.js	2011-10-10 16:09:22 UTC (rev 97063)
@@ -190,11 +190,11 @@
 
     _saveSourceMapping: function(sourceMapping)
     {
-        var oldUISourceCode;
+        var oldSourceMapping;
         if (this._sourceMapping)
-            oldUISourceCode = this._sourceMapping.uiSourceCode;
+            oldSourceMapping = this._sourceMapping;
         this._sourceMapping = sourceMapping;
-        this.dispatchEventToListeners(WebInspector.RawSourceCode.Events.SourceMappingUpdated, { oldUISourceCode: oldUISourceCode });
+        this.dispatchEventToListeners(WebInspector.RawSourceCode.Events.SourceMappingUpdated, { oldSourceMapping: oldSourceMapping });
     }
 }
 
@@ -207,26 +207,26 @@
 WebInspector.RawSourceCode.PlainSourceMapping = function(rawSourceCode, uiSourceCode)
 {
     this._rawSourceCode = rawSourceCode;
-    this._uiSourceCode = uiSourceCode;
+    this._uiSourceCodeList = [uiSourceCode];
 }
 
 WebInspector.RawSourceCode.PlainSourceMapping.prototype = {
     rawLocationToUILocation: function(rawLocation)
     {
-        return new WebInspector.UILocation(this._uiSourceCode, rawLocation.lineNumber, rawLocation.columnNumber);
+        return new WebInspector.UILocation(this._uiSourceCodeList[0], rawLocation.lineNumber, rawLocation.columnNumber);
     },
 
     uiLocationToRawLocation: function(uiSourceCode, lineNumber)
     {
-        console.assert(uiSourceCode === this._uiSourceCode);
+        console.assert(uiSourceCode === this._uiSourceCodeList[0]);
         var rawLocation = { lineNumber: lineNumber, columnNumber: 0 };
         rawLocation.scriptId = this._rawSourceCode._scriptForRawLocation(rawLocation.lineNumber, rawLocation.columnNumber).scriptId;
         return rawLocation;
     },
 
-    get uiSourceCode()
+    uiSourceCodeList: function()
     {
-        return this._uiSourceCode;
+        return this._uiSourceCodeList;
     }
 }
 
@@ -236,7 +236,7 @@
 WebInspector.RawSourceCode.FormattedSourceMapping = function(rawSourceCode, uiSourceCode, mapping)
 {
     this._rawSourceCode = rawSourceCode;
-    this._uiSourceCode = uiSourceCode;
+    this._uiSourceCodeList = [uiSourceCode];
     this._mapping = mapping;
 }
 
@@ -244,20 +244,20 @@
     rawLocationToUILocation: function(rawLocation)
     {
         var location = this._mapping.originalToFormatted(rawLocation);
-        return new WebInspector.UILocation(this._uiSourceCode, location.lineNumber, location.columnNumber);
+        return new WebInspector.UILocation(this._uiSourceCodeList[0], location.lineNumber, location.columnNumber);
     },
 
     uiLocationToRawLocation: function(uiSourceCode, lineNumber)
     {
-        console.assert(uiSourceCode === this._uiSourceCode);
+        console.assert(uiSourceCode === this._uiSourceCodeList[0]);
         var rawLocation = this._mapping.formattedToOriginal({ lineNumber: lineNumber, columnNumber: 0 });
         rawLocation.scriptId = this._rawSourceCode._scriptForRawLocation(rawLocation.lineNumber, rawLocation.columnNumber).scriptId;
         return rawLocation;
     },
 
-    get uiSourceCode()
+    uiSourceCodeList: function()
     {
-        return this._uiSourceCode;
+        return this._uiSourceCodeList;
     }
 }
 

Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (97062 => 97063)


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2011-10-10 16:09:22 UTC (rev 97063)
@@ -696,8 +696,9 @@
 
     _uiSourceCodeReplaced: function(event)
     {
-        var oldUISourceCode = event.data.oldUISourceCode;
-        var uiSourceCode = event.data.uiSourceCode;
+        // FIXME: support multiple entries.
+        var oldUISourceCode = event.data.oldUISourceCodeList[0];
+        var uiSourceCode = event.data.uiSourceCodeList[0];
 
         // Re-bind file select option from old source file to new one.
         var option = oldUISourceCode._option;

Modified: trunk/Source/WebCore/inspector/front-end/UISourceCode.js (97062 => 97063)


--- trunk/Source/WebCore/inspector/front-end/UISourceCode.js	2011-10-10 14:51:44 UTC (rev 97062)
+++ trunk/Source/WebCore/inspector/front-end/UISourceCode.js	2011-10-10 16:09:22 UTC (rev 97063)
@@ -30,6 +30,7 @@
 
 /**
  * @constructor
+ * @extends {WebInspector.Object}
  */
 WebInspector.UISourceCode = function(id, url, isContentScript, rawSourceCode, contentProvider)
 {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to