Changeset 143100 in webkit


Ignore:
Timestamp:
Feb 16, 2013 3:28:19 AM (11 years ago)
Author:
vsevik@chromium.org
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:
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r143092 r143100  
     12013-02-16  Vsevolod Vlasov  <vsevik@chromium.org>
     2
     3        Web Inspector: Create separate project for each domain for UISourceCode based on browser resources.
     4        https://bugs.webkit.org/show_bug.cgi?id=109691
     5
     6        Reviewed by Pavel Feldman.
     7
     8        * inspector/debugger/live-edit-breakpoints-expected.txt:
     9        * inspector/debugger/live-edit-breakpoints.html:
     10        * inspector/uisourcecode-revisions.html:
     11
    1122013-02-15  Tony Chang  <tony@chromium.org>
    213
  • trunk/LayoutTests/inspector/debugger/live-edit-breakpoints-expected.txt

    r139454 r143100  
    1010        edit-me-breakpoints.js:2, enabled:true
    1111    Dumping breakpoint locations
    12         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     12        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    1313Editing source:
    1414    TextEditor.removeBreakpoint(lineNumber = 2)
     
    1818        edit-me-breakpoints.js:2, enabled:true
    1919    Dumping breakpoint locations
    20         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     20        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    2121Undoing source editing:
    2222    OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     
    2727        edit-me-breakpoints.js:2, enabled:true
    2828    Dumping breakpoint locations
    29         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     29        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    3030Finally removing breakpoint:
    3131    TextEditor.removeBreakpoint(lineNumber = 2)
     
    3939        edit-me-breakpoints.js:2, enabled:true
    4040    Dumping breakpoint locations
    41         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     41        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    4242Editing source:
    4343    OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     
    4747        edit-me-breakpoints.js:2, enabled:true
    4848    Dumping breakpoint locations
    49         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     49        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    5050Committing edited source:
    5151    OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     
    5656        edit-me-breakpoints.js:2, enabled:true
    5757    Dumping breakpoint locations
    58         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     58        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    5959Finally removing breakpoint:
    6060    TextEditor.removeBreakpoint(lineNumber = 2)
     
    6868        edit-me-breakpoints.js:2, enabled:true
    6969    Dumping breakpoint locations
    70         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     70        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    7171Editing source:
    7272    OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     
    7676        edit-me-breakpoints.js:2, enabled:true
    7777    Dumping breakpoint locations
    78         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     78        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    7979Committing edited source:
    8080    Dumping breakpoint storage
    8181        edit-me-breakpoints.js:2, enabled:true
    8282    Dumping breakpoint locations
    83         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     83        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    8484Editing source again so that live edit could succeed:
    8585    Dumping breakpoint storage
    8686        edit-me-breakpoints.js:2, enabled:true
    8787    Dumping breakpoint locations
    88         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     88        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    8989Committing edited source again:
    9090    OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     
    9595        edit-me-breakpoints.js:2, enabled:true
    9696    Dumping breakpoint locations
    97         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     97        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    9898Finally removing breakpoint:
    9999    TextEditor.removeBreakpoint(lineNumber = 2)
     
    107107        edit-me-breakpoints.js:2, enabled:true
    108108    Dumping breakpoint locations
    109         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     109        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    110110Editing source:
    111111    OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false)
     
    115115        edit-me-breakpoints.js:2, enabled:true
    116116    Dumping breakpoint locations
    117         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     117        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    118118Committing edited source:
    119119    Dumping breakpoint storage
    120120        edit-me-breakpoints.js:2, enabled:true
    121121    Dumping breakpoint locations
    122         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     122        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    123123Undoing source editing:
    124124    Dumping breakpoint storage
    125125        edit-me-breakpoints.js:2, enabled:true
    126126    Dumping breakpoint locations
    127         url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger
     127        url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file://
    128128Committing edited source again:
    129129    OriginalTextEditor.removeBreakpoint(lineNumber = 2)
     
    134134        edit-me-breakpoints.js:2, enabled:true
    135135    Dumping breakpoint locations
    136         url: edit-me-breakpoints.js, lineNumber: 2, project name: network
     136        url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file://
    137137Finally removing breakpoint:
    138138    TextEditor.removeBreakpoint(lineNumber = 2)
     
    149149    Dumping breakpoint storage
    150150    Dumping breakpoint locations
    151         url: , lineNumber: 2, project name: debugger
     151        url: , lineNumber: 2, project type: debugger, project id: debugger:
    152152Editing source:
    153153    Dumping breakpoint storage
    154154    Dumping breakpoint locations
    155         url: , lineNumber: 2, project name: debugger
     155        url: , lineNumber: 2, project type: debugger, project id: debugger:
    156156Undoing source editing:
    157157    Dumping breakpoint storage
    158158    Dumping breakpoint locations
    159         url: , lineNumber: 2, project name: debugger
     159        url: , lineNumber: 2, project type: debugger, project id: debugger:
    160160Finally removing breakpoint:
    161161    TextEditor.removeBreakpoint(lineNumber = 2)
     
    172172    Dumping breakpoint storage
    173173    Dumping breakpoint locations
    174         url: , lineNumber: 2, project name: debugger
     174        url: , lineNumber: 2, project type: debugger, project id: debugger:
    175175Editing source:
    176176    Dumping breakpoint storage
    177177    Dumping breakpoint locations
    178         url: , lineNumber: 2, project name: debugger
     178        url: , lineNumber: 2, project type: debugger, project id: debugger:
    179179Undoing source editing:
    180180    Dumping breakpoint storage
    181181    Dumping breakpoint locations
    182         url: , lineNumber: 2, project name: debugger
     182        url: , lineNumber: 2, project type: debugger, project id: debugger:
    183183Finally removing breakpoint:
    184184    TextEditor.removeBreakpoint(lineNumber = 2)
  • trunk/LayoutTests/inspector/debugger/live-edit-breakpoints.html

    r142474 r143100  
    4040            var uiLocation = locations[i].uiLocation;
    4141            var uiSourceCode = uiLocation.uiSourceCode;
    42             var project = WebInspector.workspace.projectForUISourceCode(uiSourceCode);
    43             InspectorTest.addResult("        url: " + pathToFileName(uiSourceCode.originURL()) + ", lineNumber: " + uiLocation.lineNumber + ", project name: " + project.id());
     42            var project = uiSourceCode.project();
     43            InspectorTest.addResult("        url: " + pathToFileName(uiSourceCode.originURL()) + ", lineNumber: " + uiLocation.lineNumber + ", project type: " + project.type() + ", project id: " + project.id());
    4444        }
    4545    }
  • trunk/LayoutTests/inspector/uisourcecode-revisions.html

    r142474 r143100  
    1010    {
    1111        var workspace = new WebInspector.Workspace();
    12         var projectDelegate = new WebInspector.SimpleProjectDelegate(WebInspector.projectTypes.Network);
     12        var projectDelegate = new WebInspector.SimpleProjectDelegate("", WebInspector.projectTypes.Network);
    1313        var project = workspace.addProject(projectDelegate);
    1414        project.requestFileContent = function(uri, callback)
  • trunk/Source/WebCore/ChangeLog

    r143098 r143100  
     12013-02-16  Vsevolod Vlasov  <vsevik@chromium.org>
     2
     3        Web Inspector: Create separate project for each domain for UISourceCode based on browser resources.
     4        https://bugs.webkit.org/show_bug.cgi?id=109691
     5
     6        Reviewed by Pavel Feldman.
     7
     8        Separate project of certain type is now created for each domain.
     9        UISourceCode path represents a path in the project now.
     10        UISourceCode uri is now calculated based on project id and path.
     11        It is also possible to calculate path based on projectId and URI, which is used for uiSourceCodeForURI() methods.
     12
     13        * inspector/front-end/ScriptSnippetModel.js:
     14        (WebInspector.ScriptSnippetModel.prototype._addScriptSnippet):
     15        * inspector/front-end/SimpleWorkspaceProvider.js:
     16        (WebInspector.SimpleProjectDelegate):
     17        (WebInspector.SimpleProjectDelegate.projectId):
     18        (WebInspector.SimpleProjectDelegate.prototype.id):
     19        (WebInspector.SimpleProjectDelegate.prototype.displayName):
     20        (WebInspector.SimpleProjectDelegate.prototype.addFile):
     21        (WebInspector.SimpleWorkspaceProvider):
     22        (WebInspector.SimpleWorkspaceProvider.splitURL):
     23        (WebInspector.SimpleWorkspaceProvider._pathForSplittedURL):
     24        (WebInspector.SimpleWorkspaceProvider.uriForURL):
     25        (WebInspector.SimpleWorkspaceProvider.prototype._projectDelegate):
     26        (WebInspector.SimpleWorkspaceProvider.prototype._innerAddFileForURL):
     27        (WebInspector.SimpleWorkspaceProvider.prototype.addFileByName):
     28        (WebInspector.SimpleWorkspaceProvider.prototype._innerAddFile):
     29        (WebInspector.SimpleWorkspaceProvider.prototype.removeFileByName):
     30        (WebInspector.SimpleWorkspaceProvider.prototype.reset):
     31        * inspector/front-end/UISourceCode.js:
     32        (WebInspector.UISourceCode.uri):
     33        (WebInspector.UISourceCode.path):
     34        (WebInspector.UISourceCode.prototype.uri):
     35        * inspector/front-end/Workspace.js:
     36        (WebInspector.Project.prototype._fileAdded):
     37        (WebInspector.Project.prototype._fileRemoved):
     38        (WebInspector.Project.prototype.uiSourceCodeForURI):
     39
    1402013-02-15  Chris Fleizach  <cfleizach@apple.com>
    241
  • trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js

    r142269 r143100  
    8383    _addScriptSnippet: function(snippet)
    8484    {
    85         var uiSourceCode = this._workspaceProvider.addFileForURL(snippet.name, new WebInspector.SnippetContentProvider(snippet), true);
     85        var uiSourceCode = this._workspaceProvider.addFileByName("", snippet.name, new WebInspector.SnippetContentProvider(snippet), true);
    8686        var scriptFile = new WebInspector.SnippetScriptFile(this, uiSourceCode);
    8787        uiSourceCode.setScriptFile(scriptFile);
     
    104104        delete this._uiSourceCodeForSnippetId[snippet.id];
    105105        this._snippetIdForUISourceCode.remove(uiSourceCode);
    106         this._workspaceProvider.removeFile(snippet.name);
     106        this._workspaceProvider.removeFileByName("", snippet.name);
    107107    },
    108108
  • trunk/Source/WebCore/inspector/front-end/SimpleWorkspaceProvider.js

    r142474 r143100  
    3434 * @extends {WebInspector.Object}
    3535 */
    36 WebInspector.SimpleProjectDelegate = function(type)
    37 {
     36WebInspector.SimpleProjectDelegate = function(name, type)
     37{
     38    this._name = name;
    3839    this._type = type;
    3940    /** @type {Object.<string, WebInspector.ContentProvider>} */
     
    4243}
    4344
     45WebInspector.SimpleProjectDelegate.projectId = function(name, type)
     46{
     47    var typePrefix = type !== WebInspector.projectTypes.Network ? (type + ":") : "";
     48    return typePrefix + name;
     49}
     50
    4451WebInspector.SimpleProjectDelegate.prototype = {
    4552    /**
     
    4855    id: function()
    4956    {
     57        return WebInspector.SimpleProjectDelegate.projectId(this._name, this._type);
     58    },
     59
     60    /**
     61     * @return {string}
     62     */
     63    type: function()
     64    {
    5065        return this._type;
    5166    },
     
    5469     * @return {string}
    5570     */
    56     type: function()
    57     {
    58         return this._type;
    59     },
    60 
    61     /**
    62      * @return {string}
    63      */
    6471    displayName: function()
    6572    {
    66         return "";
     73        if (typeof this._displayName !== "undefined")
     74            return this._displayName;
     75        if (!this._name) {
     76            this._displayName = "";
     77            return this._displayName;
     78        }
     79        var parsedURL = new WebInspector.ParsedURL(this._name);
     80        if (parsedURL.isValid)
     81            this._displayName = parsedURL.host + (parsedURL.port ? (":" + parsedURL.port) : "");
     82        else
     83            this._displayName = this._name;
     84        return this._displayName;
    6785    },
    6886
     
    88106
    89107    /**
     108     * @param {string} path
    90109     * @param {string} query
    91110     * @param {boolean} caseSensitive
     
    105124     * @param {boolean} isEditable
    106125     * @param {boolean=} isContentScript
     126     * @return {string}
    107127     */
    108128    addFile: function(path, forceUniquePath, url, contentProvider, isEditable, isContentScript)
     
    110130        if (forceUniquePath)
    111131            path = this._uniquePath(path);
    112         console.assert(!this._contentProviders[path]);
    113132        var fileDescriptor = new WebInspector.FileDescriptor(path, url, url, contentProvider.contentType(), isEditable, isContentScript);
    114133        this._contentProviders[path] = contentProvider;
     
    157176    this._workspace = workspace;
    158177    this._type = type;
    159     this._simpleProjectDelegate = new WebInspector.SimpleProjectDelegate(this._type);
    160     this._workspace.addProject(this._simpleProjectDelegate);
     178    this._simpleProjectDelegates = {};
    161179}
    162180
    163181/**
    164182 * @param {string} url
     183 * @return {Array.<string>}
     184 */
     185WebInspector.SimpleWorkspaceProvider.splitURL = function(url)
     186{
     187    var parsedURL = new WebInspector.ParsedURL(url);
     188    var origin;
     189    var folderPath;
     190    var name;
     191    if (parsedURL.isValid) {
     192        origin = parsedURL.scheme + "://" + parsedURL.host;
     193        if (parsedURL.port)
     194            origin += ":" + parsedURL.port;
     195        folderPath = parsedURL.folderPathComponents;
     196        name = parsedURL.lastPathComponent;
     197        if (parsedURL.queryParams)
     198            name += "?" + parsedURL.queryParams;
     199    } else {
     200        origin = "";
     201        folderPath = "";
     202        name = url;
     203    }
     204    var result = [origin];
     205    var splittedPath = folderPath.split("/");
     206    for (var i = 1; i < splittedPath.length; ++i)
     207        result.push(splittedPath[i]);
     208    result.push(name);
     209    return result;
     210}
     211
     212/**
     213 * @param {Array.<string>} splittedURL
    165214 * @return {string}
    166215 */
     216WebInspector.SimpleWorkspaceProvider._pathForSplittedURL = function(splittedURL)
     217{
     218    splittedURL.shift();
     219    return splittedURL.join("/");
     220}
     221
     222/**
     223 * @param {string} url
     224 * @param {string} type
     225 * @return {string}
     226 */
    167227WebInspector.SimpleWorkspaceProvider.uriForURL = function(url, type)
    168 {   
    169     var uriTypePrefix = type !== WebInspector.projectTypes.Network ? (type + ":") : "";
    170     var uri = uriTypePrefix + url;
    171     return uri;
    172 }
     228{
     229    var splittedURL = WebInspector.SimpleWorkspaceProvider.splitURL(url);
     230    var projectId = WebInspector.SimpleProjectDelegate.projectId(splittedURL[0], type);
     231    var path = WebInspector.SimpleWorkspaceProvider._pathForSplittedURL(splittedURL);
     232    return WebInspector.UISourceCode.uri(projectId, path);
     233 }
    173234
    174235WebInspector.SimpleWorkspaceProvider.prototype = {
    175236    /**
     237     * @param {string} projectName
     238     * @return {WebInspector.ProjectDelegate}
     239     */
     240    _projectDelegate: function(projectName)
     241    {
     242        if (this._simpleProjectDelegates[projectName])
     243            return this._simpleProjectDelegates[projectName];
     244        var simpleProjectDelegate = new WebInspector.SimpleProjectDelegate(projectName, this._type);
     245        this._simpleProjectDelegates[projectName] = simpleProjectDelegate;
     246        this._workspace.addProject(simpleProjectDelegate);
     247        return simpleProjectDelegate;
     248    },
     249 
     250    /**
    176251     * @param {string} url
    177252     * @param {WebInspector.ContentProvider} contentProvider
    178253     * @param {boolean} isEditable
    179254     * @param {boolean=} isContentScript
     255     * @return {WebInspector.UISourceCode}
    180256     */
    181257    addFileForURL: function(url, contentProvider, isEditable, isContentScript)
     
    189265     * @param {boolean} isEditable
    190266     * @param {boolean=} isContentScript
     267     * @return {WebInspector.UISourceCode}
    191268     */
    192269    addUniqueFileForURL: function(url, contentProvider, isEditable, isContentScript)
     
    199276     * @param {WebInspector.ContentProvider} contentProvider
    200277     * @param {boolean} isEditable
    201      * @param {boolean=} isContentScript
     278     * @param {boolean} forceUnique
     279     * @param {boolean=} isContentScript
     280     * @return {WebInspector.UISourceCode}
    202281     */
    203282    _innerAddFileForURL: function(url, contentProvider, isEditable, forceUnique, isContentScript)
    204283    {
    205         var path = WebInspector.SimpleWorkspaceProvider.uriForURL(url, this._type);
    206         path = this._simpleProjectDelegate.addFile(path, forceUnique, url, contentProvider, isEditable, isContentScript);
    207         return this._workspace.uiSourceCode(this._simpleProjectDelegate.id(), path);
    208     },
    209 
    210     /**
    211      * @param {string} url
    212      */
    213     removeFile: function(url)
    214     {
    215         var path = WebInspector.SimpleWorkspaceProvider.uriForURL(url, this._type);
    216         this._simpleProjectDelegate.removeFile(path);
     284        var splittedURL = WebInspector.SimpleWorkspaceProvider.splitURL(url);
     285        var projectName = splittedURL[0];
     286        var path = WebInspector.SimpleWorkspaceProvider._pathForSplittedURL(splittedURL);
     287        return this._innerAddFile(projectName, path, url, contentProvider, isEditable, forceUnique, isContentScript);
     288    },
     289
     290    /**
     291     * @param {string} projectName
     292     * @param {string} name
     293     * @param {WebInspector.ContentProvider} contentProvider
     294     * @param {boolean} isEditable
     295     * @param {boolean=} isContentScript
     296     * @return {WebInspector.UISourceCode}
     297     */
     298    addFileByName: function(projectName, name, contentProvider, isEditable, isContentScript)
     299    {
     300        return this._innerAddFile("", name, name, contentProvider, isEditable, false, isContentScript);
     301    },
     302
     303    /**
     304     * @param {string} projectName
     305     * @param {string} path
     306     * @param {WebInspector.ContentProvider} contentProvider
     307     * @param {boolean} isEditable
     308     * @param {boolean} forceUnique
     309     * @param {boolean=} isContentScript
     310     * @return {WebInspector.UISourceCode}
     311     */
     312    _innerAddFile: function(projectName, path, url, contentProvider, isEditable, forceUnique, isContentScript)
     313    {
     314        var projectDelegate = this._projectDelegate(projectName);
     315        path = projectDelegate.addFile(path, forceUnique, url, contentProvider, isEditable, isContentScript);
     316        return this._workspace.uiSourceCode(projectDelegate.id(), path);
     317    },
     318
     319    /**
     320     * @param {string} projectName
     321     * @param {string} path
     322     */
     323    removeFileByName: function(projectName, path)
     324    {
     325        var projectDelegate = this._projectDelegate(projectName);
     326        projectDelegate.removeFile(path);
    217327    },
    218328
    219329    reset: function()
    220330    {
    221         this._simpleProjectDelegate.reset();
     331        for (var projectName in this._simpleProjectDelegates)
     332            this._simpleProjectDelegates[projectName].reset();
     333        this._simpleProjectDelegates = {};
    222334    },
    223335   
  • trunk/Source/WebCore/inspector/front-end/UISourceCode.js

    r142474 r143100  
    8282}
    8383
     84/**
     85 * @param {string} projectId
     86 * @param {string} path
     87 * @return {string}
     88 */
     89WebInspector.UISourceCode.uri = function(projectId, path)
     90{
     91    if (!projectId)
     92        return path;
     93    if (!path)
     94        return projectId;
     95    return projectId + "/" + path;
     96}
     97
     98/**
     99 * @param {string} projectId
     100 * @param {string} uri
     101 * @return {?string}
     102 */
     103WebInspector.UISourceCode.path = function(projectId, uri)
     104{
     105    if (!projectId)
     106        return uri;
     107    if (!uri.startsWith(projectId))
     108        return null;
     109    var path = uri.substr(projectId.length);
     110    if (path.length && path[0] === "/")
     111        path = path.substr(1);
     112    return path;
     113}
     114
    84115WebInspector.UISourceCode.prototype = {
    85116    /**
     
    104135    uri: function()
    105136    {
    106         return this._path;
     137        return WebInspector.UISourceCode.uri(this._project.id(), this._path);
    107138    },
    108139
  • trunk/Source/WebCore/inspector/front-end/Workspace.js

    r142474 r143100  
    188188    {
    189189        var fileDescriptor = /** @type {WebInspector.FileDescriptor} */ (event.data);
    190         var uiSourceCode = this.uiSourceCodeForURI(fileDescriptor.path);
     190        var uiSourceCode = this.uiSourceCode(fileDescriptor.path);
    191191        if (uiSourceCode) {
    192192            // FIXME: Implement
     
    202202    {
    203203        var path = /** @type {string} */ (event.data);
    204         var uiSourceCode = this.uiSourceCodeForURI(path);
     204        var uiSourceCode = this.uiSourceCode(path);
    205205        if (!uiSourceCode)
    206206            return;
     
    244244    uiSourceCodeForURI: function(uri)
    245245    {
    246         return this.uiSourceCode(uri);
     246        var path = WebInspector.UISourceCode.path(this.id(), uri);
     247        if (typeof path !== "string")
     248            return null;
     249        return this._uiSourceCodes[path];
    247250    },
    248251
     
    296299    Debugger: "debugger",
    297300    LiveEdit: "liveedit",
    298     Compiler: "compiler",
    299301    Network: "network",
    300302    Snippets: "snippets",
     
    442444    },
    443445
    444     /**
    445      * @return {?WebInspector.Project}
    446      */
    447     projectForUISourceCode: function(uiSourceCode)
    448     {
    449         for (var projectId in this._projects) {
    450             var project = this._projects[projectId];
    451             if (project.uiSourceCodeForURI(uiSourceCode.uri()))
    452                 return project;
    453         }
    454         return null;
    455     },
    456 
    457446    __proto__: WebInspector.Object.prototype
    458447}
Note: See TracChangeset for help on using the changeset viewer.