Title: [143100] trunk
Revision
143100
Author
[email protected]
Date
2013-02-16 03:28:19 -0800 (Sat, 16 Feb 2013)

Log Message

Web Inspector: Create separate project for each domain for UISourceCode based on browser resources.
https://bugs.webkit.org/show_bug.cgi?id=109691

Reviewed by Pavel Feldman.

Source/WebCore:

Separate project of certain type is now created for each domain.
UISourceCode path represents a path in the project now.
UISourceCode uri is now calculated based on project id and path.
It is also possible to calculate path based on projectId and URI, which is used for uiSourceCodeForURI() methods.

* inspector/front-end/ScriptSnippetModel.js:
(WebInspector.ScriptSnippetModel.prototype._addScriptSnippet):
* inspector/front-end/SimpleWorkspaceProvider.js:
(WebInspector.SimpleProjectDelegate):
(WebInspector.SimpleProjectDelegate.projectId):
(WebInspector.SimpleProjectDelegate.prototype.id):
(WebInspector.SimpleProjectDelegate.prototype.displayName):
(WebInspector.SimpleProjectDelegate.prototype.addFile):
(WebInspector.SimpleWorkspaceProvider):
(WebInspector.SimpleWorkspaceProvider.splitURL):
(WebInspector.SimpleWorkspaceProvider._pathForSplittedURL):
(WebInspector.SimpleWorkspaceProvider.uriForURL):
(WebInspector.SimpleWorkspaceProvider.prototype._projectDelegate):
(WebInspector.SimpleWorkspaceProvider.prototype._innerAddFileForURL):
(WebInspector.SimpleWorkspaceProvider.prototype.addFileByName):
(WebInspector.SimpleWorkspaceProvider.prototype._innerAddFile):
(WebInspector.SimpleWorkspaceProvider.prototype.removeFileByName):
(WebInspector.SimpleWorkspaceProvider.prototype.reset):
* inspector/front-end/UISourceCode.js:
(WebInspector.UISourceCode.uri):
(WebInspector.UISourceCode.path):
(WebInspector.UISourceCode.prototype.uri):
* inspector/front-end/Workspace.js:
(WebInspector.Project.prototype._fileAdded):
(WebInspector.Project.prototype._fileRemoved):
(WebInspector.Project.prototype.uiSourceCodeForURI):

LayoutTests:

* inspector/debugger/live-edit-breakpoints-expected.txt:
* inspector/debugger/live-edit-breakpoints.html:
* inspector/uisourcecode-revisions.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (143099 => 143100)


--- trunk/LayoutTests/ChangeLog	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/LayoutTests/ChangeLog	2013-02-16 11:28:19 UTC (rev 143100)
@@ -1,3 +1,14 @@
+2013-02-16  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Create separate project for each domain for UISourceCode based on browser resources.
+        https://bugs.webkit.org/show_bug.cgi?id=109691
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/debugger/live-edit-breakpoints-expected.txt:
+        * inspector/debugger/live-edit-breakpoints.html:
+        * inspector/uisourcecode-revisions.html:
+
 2013-02-15  Tony Chang  <[email protected]>
 
         Padding and border changes doesn't trigger relayout of children

Modified: trunk/LayoutTests/inspector/debugger/live-edit-breakpoints-expected.txt (143099 => 143100)


--- trunk/LayoutTests/inspector/debugger/live-edit-breakpoints-expected.txt	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/LayoutTests/inspector/debugger/live-edit-breakpoints-expected.txt	2013-02-16 11:28:19 UTC (rev 143100)
@@ -9,7 +9,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Editing source:
     TextEditor.removeBreakpoint(lineNumber = 2)
     TextEditor.addBreakpoint(lineNumber = 2, disabled = true)
@@ -17,7 +17,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Undoing source editing:
     OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -26,7 +26,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Finally removing breakpoint:
     TextEditor.removeBreakpoint(lineNumber = 2)
     Dumping breakpoint storage
@@ -38,7 +38,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Editing source:
     OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -46,7 +46,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Committing edited source:
     OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -55,7 +55,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Finally removing breakpoint:
     TextEditor.removeBreakpoint(lineNumber = 2)
     Dumping breakpoint storage
@@ -67,7 +67,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Editing source:
     OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -75,17 +75,17 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Committing edited source:
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Editing source again so that live edit could succeed:
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Committing edited source again:
     OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -94,7 +94,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Finally removing breakpoint:
     TextEditor.removeBreakpoint(lineNumber = 2)
     Dumping breakpoint storage
@@ -106,7 +106,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Editing source:
     OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -114,17 +114,17 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Committing edited source:
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Undoing source editing:
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
 Committing edited source again:
     OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     TextEditor.removeBreakpoint(lineNumber = 2)
@@ -133,7 +133,7 @@
     Dumping breakpoint storage
         edit-me-breakpoints.js:2, enabled:true
     Dumping breakpoint locations
-        url: edit-me-breakpoints.js, lineNumber: 2, project name: network
+        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
 Finally removing breakpoint:
     TextEditor.removeBreakpoint(lineNumber = 2)
     Dumping breakpoint storage
@@ -148,15 +148,15 @@
     TextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     Dumping breakpoint storage
     Dumping breakpoint locations
-        url: , lineNumber: 2, project name: debugger
+        url: , lineNumber: 2, project type: debugger, project id: debugger:
 Editing source:
     Dumping breakpoint storage
     Dumping breakpoint locations
-        url: , lineNumber: 2, project name: debugger
+        url: , lineNumber: 2, project type: debugger, project id: debugger:
 Undoing source editing:
     Dumping breakpoint storage
     Dumping breakpoint locations
-        url: , lineNumber: 2, project name: debugger
+        url: , lineNumber: 2, project type: debugger, project id: debugger:
 Finally removing breakpoint:
     TextEditor.removeBreakpoint(lineNumber = 2)
     Dumping breakpoint storage
@@ -171,15 +171,15 @@
     TextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     Dumping breakpoint storage
     Dumping breakpoint locations
-        url: , lineNumber: 2, project name: debugger
+        url: , lineNumber: 2, project type: debugger, project id: debugger:
 Editing source:
     Dumping breakpoint storage
     Dumping breakpoint locations
-        url: , lineNumber: 2, project name: debugger
+        url: , lineNumber: 2, project type: debugger, project id: debugger:
 Undoing source editing:
     Dumping breakpoint storage
     Dumping breakpoint locations
-        url: , lineNumber: 2, project name: debugger
+        url: , lineNumber: 2, project type: debugger, project id: debugger:
 Finally removing breakpoint:
     TextEditor.removeBreakpoint(lineNumber = 2)
     Dumping breakpoint storage

Modified: trunk/LayoutTests/inspector/debugger/live-edit-breakpoints.html (143099 => 143100)


--- trunk/LayoutTests/inspector/debugger/live-edit-breakpoints.html	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/LayoutTests/inspector/debugger/live-edit-breakpoints.html	2013-02-16 11:28:19 UTC (rev 143100)
@@ -39,8 +39,8 @@
         for (var i = 0; i < locations.length; ++i) {
             var uiLocation = locations[i].uiLocation;
             var uiSourceCode = uiLocation.uiSourceCode;
-            var project = WebInspector.workspace.projectForUISourceCode(uiSourceCode);
-            InspectorTest.addResult("        url: " + pathToFileName(uiSourceCode.originURL()) + ", lineNumber: " + uiLocation.lineNumber + ", project name: " + project.id());
+            var project = uiSourceCode.project();
+            InspectorTest.addResult("        url: " + pathToFileName(uiSourceCode.originURL()) + ", lineNumber: " + uiLocation.lineNumber + ", project type: " + project.type() + ", project id: " + project.id());
         }
     }
 

Modified: trunk/LayoutTests/inspector/uisourcecode-revisions.html (143099 => 143100)


--- trunk/LayoutTests/inspector/uisourcecode-revisions.html	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/LayoutTests/inspector/uisourcecode-revisions.html	2013-02-16 11:28:19 UTC (rev 143100)
@@ -9,7 +9,7 @@
     function createMockProject()
     {
         var workspace = new WebInspector.Workspace();
-        var projectDelegate = new WebInspector.SimpleProjectDelegate(WebInspector.projectTypes.Network);
+        var projectDelegate = new WebInspector.SimpleProjectDelegate("", WebInspector.projectTypes.Network);
         var project = workspace.addProject(projectDelegate);
         project.requestFileContent = function(uri, callback)
         {

Modified: trunk/Source/WebCore/ChangeLog (143099 => 143100)


--- trunk/Source/WebCore/ChangeLog	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/Source/WebCore/ChangeLog	2013-02-16 11:28:19 UTC (rev 143100)
@@ -1,3 +1,42 @@
+2013-02-16  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Create separate project for each domain for UISourceCode based on browser resources.
+        https://bugs.webkit.org/show_bug.cgi?id=109691
+
+        Reviewed by Pavel Feldman.
+
+        Separate project of certain type is now created for each domain.
+        UISourceCode path represents a path in the project now.
+        UISourceCode uri is now calculated based on project id and path.
+        It is also possible to calculate path based on projectId and URI, which is used for uiSourceCodeForURI() methods.
+
+        * inspector/front-end/ScriptSnippetModel.js:
+        (WebInspector.ScriptSnippetModel.prototype._addScriptSnippet):
+        * inspector/front-end/SimpleWorkspaceProvider.js:
+        (WebInspector.SimpleProjectDelegate):
+        (WebInspector.SimpleProjectDelegate.projectId):
+        (WebInspector.SimpleProjectDelegate.prototype.id):
+        (WebInspector.SimpleProjectDelegate.prototype.displayName):
+        (WebInspector.SimpleProjectDelegate.prototype.addFile):
+        (WebInspector.SimpleWorkspaceProvider):
+        (WebInspector.SimpleWorkspaceProvider.splitURL):
+        (WebInspector.SimpleWorkspaceProvider._pathForSplittedURL):
+        (WebInspector.SimpleWorkspaceProvider.uriForURL):
+        (WebInspector.SimpleWorkspaceProvider.prototype._projectDelegate):
+        (WebInspector.SimpleWorkspaceProvider.prototype._innerAddFileForURL):
+        (WebInspector.SimpleWorkspaceProvider.prototype.addFileByName):
+        (WebInspector.SimpleWorkspaceProvider.prototype._innerAddFile):
+        (WebInspector.SimpleWorkspaceProvider.prototype.removeFileByName):
+        (WebInspector.SimpleWorkspaceProvider.prototype.reset):
+        * inspector/front-end/UISourceCode.js:
+        (WebInspector.UISourceCode.uri):
+        (WebInspector.UISourceCode.path):
+        (WebInspector.UISourceCode.prototype.uri):
+        * inspector/front-end/Workspace.js:
+        (WebInspector.Project.prototype._fileAdded):
+        (WebInspector.Project.prototype._fileRemoved):
+        (WebInspector.Project.prototype.uiSourceCodeForURI):
+
 2013-02-15  Chris Fleizach  <[email protected]>
 
         AX: Split WebAccessibilityObjectWrapper so code can be shared with iOS

Modified: trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js (143099 => 143100)


--- trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js	2013-02-16 11:28:19 UTC (rev 143100)
@@ -82,7 +82,7 @@
      */
     _addScriptSnippet: function(snippet)
     {
-        var uiSourceCode = this._workspaceProvider.addFileForURL(snippet.name, new WebInspector.SnippetContentProvider(snippet), true);
+        var uiSourceCode = this._workspaceProvider.addFileByName("", snippet.name, new WebInspector.SnippetContentProvider(snippet), true);
         var scriptFile = new WebInspector.SnippetScriptFile(this, uiSourceCode);
         uiSourceCode.setScriptFile(scriptFile);
         this._snippetIdForUISourceCode.put(uiSourceCode, snippet.id);
@@ -103,7 +103,7 @@
         this._releaseSnippetScript(uiSourceCode);
         delete this._uiSourceCodeForSnippetId[snippet.id];
         this._snippetIdForUISourceCode.remove(uiSourceCode);
-        this._workspaceProvider.removeFile(snippet.name);
+        this._workspaceProvider.removeFileByName("", snippet.name);
     },
 
     /**

Modified: trunk/Source/WebCore/inspector/front-end/SimpleWorkspaceProvider.js (143099 => 143100)


--- trunk/Source/WebCore/inspector/front-end/SimpleWorkspaceProvider.js	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/Source/WebCore/inspector/front-end/SimpleWorkspaceProvider.js	2013-02-16 11:28:19 UTC (rev 143100)
@@ -33,21 +33,28 @@
  * @implements {WebInspector.ProjectDelegate}
  * @extends {WebInspector.Object}
  */
-WebInspector.SimpleProjectDelegate = function(type)
+WebInspector.SimpleProjectDelegate = function(name, type)
 {
+    this._name = name;
     this._type = type;
     /** @type {Object.<string, WebInspector.ContentProvider>} */
     this._contentProviders = {};
     this._lastUniqueSuffix = 0;
 }
 
+WebInspector.SimpleProjectDelegate.projectId = function(name, type)
+{
+    var typePrefix = type !== WebInspector.projectTypes.Network ? (type + ":") : "";
+    return typePrefix + name;
+}
+
 WebInspector.SimpleProjectDelegate.prototype = {
     /**
      * @return {string}
      */
     id: function()
     {
-        return this._type;
+        return WebInspector.SimpleProjectDelegate.projectId(this._name, this._type);
     },
 
     /**
@@ -63,7 +70,18 @@
      */
     displayName: function()
     {
-        return "";
+        if (typeof this._displayName !== "undefined")
+            return this._displayName;
+        if (!this._name) {
+            this._displayName = "";
+            return this._displayName;
+        }
+        var parsedURL = new WebInspector.ParsedURL(this._name);
+        if (parsedURL.isValid)
+            this._displayName = parsedURL.host + (parsedURL.port ? (":" + parsedURL.port) : "");
+        else
+            this._displayName = this._name;
+        return this._displayName;
     },
 
     /**
@@ -87,6 +105,7 @@
     },
 
     /**
+     * @param {string} path
      * @param {string} query
      * @param {boolean} caseSensitive
      * @param {boolean} isRegex
@@ -104,12 +123,12 @@
      * @param {WebInspector.ContentProvider} contentProvider
      * @param {boolean} isEditable
      * @param {boolean=} isContentScript
+     * @return {string}
      */
     addFile: function(path, forceUniquePath, url, contentProvider, isEditable, isContentScript)
     {
         if (forceUniquePath)
             path = this._uniquePath(path); 
-        console.assert(!this._contentProviders[path]);
         var fileDescriptor = new WebInspector.FileDescriptor(path, url, url, contentProvider.contentType(), isEditable, isContentScript);
         this._contentProviders[path] = contentProvider;
         this.dispatchEventToListeners(WebInspector.ProjectDelegate.Events.FileAdded, fileDescriptor);
@@ -156,27 +175,84 @@
 {
     this._workspace = workspace;
     this._type = type;
-    this._simpleProjectDelegate = new WebInspector.SimpleProjectDelegate(this._type);
-    this._workspace.addProject(this._simpleProjectDelegate);
+    this._simpleProjectDelegates = {};
 }
 
 /**
  * @param {string} url
+ * @return {Array.<string>}
+ */
+WebInspector.SimpleWorkspaceProvider.splitURL = function(url)
+{
+    var parsedURL = new WebInspector.ParsedURL(url);
+    var origin;
+    var folderPath;
+    var name;
+    if (parsedURL.isValid) {
+        origin = parsedURL.scheme + "://" + parsedURL.host;
+        if (parsedURL.port)
+            origin += ":" + parsedURL.port;
+        folderPath = parsedURL.folderPathComponents;
+        name = parsedURL.lastPathComponent;
+        if (parsedURL.queryParams)
+            name += "?" + parsedURL.queryParams;
+    } else {
+        origin = "";
+        folderPath = "";
+        name = url;
+    }
+    var result = [origin];
+    var splittedPath = folderPath.split("/");
+    for (var i = 1; i < splittedPath.length; ++i)
+        result.push(splittedPath[i]);
+    result.push(name);
+    return result;
+}
+
+/**
+ * @param {Array.<string>} splittedURL
  * @return {string}
  */
-WebInspector.SimpleWorkspaceProvider.uriForURL = function(url, type)
-{   
-    var uriTypePrefix = type !== WebInspector.projectTypes.Network ? (type + ":") : "";
-    var uri = uriTypePrefix + url;
-    return uri;
+WebInspector.SimpleWorkspaceProvider._pathForSplittedURL = function(splittedURL)
+{
+    splittedURL.shift();
+    return splittedURL.join("/");
 }
 
+/**
+ * @param {string} url
+ * @param {string} type
+ * @return {string}
+ */
+WebInspector.SimpleWorkspaceProvider.uriForURL = function(url, type)
+{
+    var splittedURL = WebInspector.SimpleWorkspaceProvider.splitURL(url);
+    var projectId = WebInspector.SimpleProjectDelegate.projectId(splittedURL[0], type);
+    var path = WebInspector.SimpleWorkspaceProvider._pathForSplittedURL(splittedURL);
+    return WebInspector.UISourceCode.uri(projectId, path);
+ }
+
 WebInspector.SimpleWorkspaceProvider.prototype = {
     /**
+     * @param {string} projectName
+     * @return {WebInspector.ProjectDelegate}
+     */
+    _projectDelegate: function(projectName)
+    {
+        if (this._simpleProjectDelegates[projectName])
+            return this._simpleProjectDelegates[projectName];
+        var simpleProjectDelegate = new WebInspector.SimpleProjectDelegate(projectName, this._type);
+        this._simpleProjectDelegates[projectName] = simpleProjectDelegate;
+        this._workspace.addProject(simpleProjectDelegate);
+        return simpleProjectDelegate;
+    },
+ 
+    /**
      * @param {string} url
      * @param {WebInspector.ContentProvider} contentProvider
      * @param {boolean} isEditable
      * @param {boolean=} isContentScript
+     * @return {WebInspector.UISourceCode}
      */
     addFileForURL: function(url, contentProvider, isEditable, isContentScript)
     {
@@ -188,6 +264,7 @@
      * @param {WebInspector.ContentProvider} contentProvider
      * @param {boolean} isEditable
      * @param {boolean=} isContentScript
+     * @return {WebInspector.UISourceCode}
      */
     addUniqueFileForURL: function(url, contentProvider, isEditable, isContentScript)
     {
@@ -198,27 +275,62 @@
      * @param {string} url
      * @param {WebInspector.ContentProvider} contentProvider
      * @param {boolean} isEditable
+     * @param {boolean} forceUnique
      * @param {boolean=} isContentScript
+     * @return {WebInspector.UISourceCode}
      */
     _innerAddFileForURL: function(url, contentProvider, isEditable, forceUnique, isContentScript)
     {
-        var path = WebInspector.SimpleWorkspaceProvider.uriForURL(url, this._type);
-        path = this._simpleProjectDelegate.addFile(path, forceUnique, url, contentProvider, isEditable, isContentScript);
-        return this._workspace.uiSourceCode(this._simpleProjectDelegate.id(), path);
+        var splittedURL = WebInspector.SimpleWorkspaceProvider.splitURL(url);
+        var projectName = splittedURL[0];
+        var path = WebInspector.SimpleWorkspaceProvider._pathForSplittedURL(splittedURL);
+        return this._innerAddFile(projectName, path, url, contentProvider, isEditable, forceUnique, isContentScript);
     },
 
     /**
-     * @param {string} url
+     * @param {string} projectName
+     * @param {string} name
+     * @param {WebInspector.ContentProvider} contentProvider
+     * @param {boolean} isEditable
+     * @param {boolean=} isContentScript
+     * @return {WebInspector.UISourceCode}
      */
-    removeFile: function(url)
+    addFileByName: function(projectName, name, contentProvider, isEditable, isContentScript)
     {
-        var path = WebInspector.SimpleWorkspaceProvider.uriForURL(url, this._type);
-        this._simpleProjectDelegate.removeFile(path);
+        return this._innerAddFile("", name, name, contentProvider, isEditable, false, isContentScript);
     },
 
+    /**
+     * @param {string} projectName
+     * @param {string} path
+     * @param {WebInspector.ContentProvider} contentProvider
+     * @param {boolean} isEditable
+     * @param {boolean} forceUnique
+     * @param {boolean=} isContentScript
+     * @return {WebInspector.UISourceCode}
+     */
+    _innerAddFile: function(projectName, path, url, contentProvider, isEditable, forceUnique, isContentScript)
+    {
+        var projectDelegate = this._projectDelegate(projectName);
+        path = projectDelegate.addFile(path, forceUnique, url, contentProvider, isEditable, isContentScript);
+        return this._workspace.uiSourceCode(projectDelegate.id(), path);
+    },
+
+    /**
+     * @param {string} projectName
+     * @param {string} path
+     */
+    removeFileByName: function(projectName, path)
+    {
+        var projectDelegate = this._projectDelegate(projectName);
+        projectDelegate.removeFile(path);
+    },
+
     reset: function()
     {
-        this._simpleProjectDelegate.reset();
+        for (var projectName in this._simpleProjectDelegates)
+            this._simpleProjectDelegates[projectName].reset();
+        this._simpleProjectDelegates = {};
     },
     
     __proto__: WebInspector.Object.prototype

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


--- trunk/Source/WebCore/inspector/front-end/UISourceCode.js	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/Source/WebCore/inspector/front-end/UISourceCode.js	2013-02-16 11:28:19 UTC (rev 143100)
@@ -81,6 +81,37 @@
     SourceMappingChanged: "SourceMappingChanged",
 }
 
+/**
+ * @param {string} projectId
+ * @param {string} path
+ * @return {string}
+ */
+WebInspector.UISourceCode.uri = function(projectId, path)
+{
+    if (!projectId)
+        return path;
+    if (!path)
+        return projectId;
+    return projectId + "/" + path;
+}
+
+/**
+ * @param {string} projectId
+ * @param {string} uri
+ * @return {?string}
+ */
+WebInspector.UISourceCode.path = function(projectId, uri)
+{
+    if (!projectId)
+        return uri;
+    if (!uri.startsWith(projectId))
+        return null;
+    var path = uri.substr(projectId.length);
+    if (path.length && path[0] === "/")
+        path = path.substr(1);
+    return path;
+}
+
 WebInspector.UISourceCode.prototype = {
     /**
      * @return {string}
@@ -103,7 +134,7 @@
      */
     uri: function()
     {
-        return this._path;
+        return WebInspector.UISourceCode.uri(this._project.id(), this._path);
     },
 
     /**

Modified: trunk/Source/WebCore/inspector/front-end/Workspace.js (143099 => 143100)


--- trunk/Source/WebCore/inspector/front-end/Workspace.js	2013-02-16 08:46:41 UTC (rev 143099)
+++ trunk/Source/WebCore/inspector/front-end/Workspace.js	2013-02-16 11:28:19 UTC (rev 143100)
@@ -187,7 +187,7 @@
     _fileAdded: function(event)
     {
         var fileDescriptor = /** @type {WebInspector.FileDescriptor} */ (event.data);
-        var uiSourceCode = this.uiSourceCodeForURI(fileDescriptor.path);
+        var uiSourceCode = this.uiSourceCode(fileDescriptor.path);
         if (uiSourceCode) {
             // FIXME: Implement
             return;
@@ -201,7 +201,7 @@
     _fileRemoved: function(event)
     {
         var path = /** @type {string} */ (event.data);
-        var uiSourceCode = this.uiSourceCodeForURI(path);
+        var uiSourceCode = this.uiSourceCode(path);
         if (!uiSourceCode)
             return;
         delete this._uiSourceCodes[uiSourceCode.path()];
@@ -243,7 +243,10 @@
      */
     uiSourceCodeForURI: function(uri)
     {
-        return this.uiSourceCode(uri);
+        var path = WebInspector.UISourceCode.path(this.id(), uri);
+        if (typeof path !== "string")
+            return null;
+        return this._uiSourceCodes[path];
     },
 
     /**
@@ -295,7 +298,6 @@
 WebInspector.projectTypes = {
     Debugger: "debugger",
     LiveEdit: "liveedit",
-    Compiler: "compiler",
     Network: "network",
     Snippets: "snippets",
     FileSystem: "filesystem"
@@ -441,19 +443,6 @@
         return result;
     },
 
-    /**
-     * @return {?WebInspector.Project}
-     */
-    projectForUISourceCode: function(uiSourceCode)
-    {
-        for (var projectId in this._projects) {
-            var project = this._projects[projectId];
-            if (project.uiSourceCodeForURI(uiSourceCode.uri()))
-                return project;
-        }
-        return null;
-    },
-
     __proto__: WebInspector.Object.prototype
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to