15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @extends {WebInspector.SDKObject} 34a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {!WebInspector.Target} target 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 36a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben MurdochWebInspector.FileSystemModel = function(target) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.SDKObject.call(this, target); 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._fileSystemsForOrigin = {}; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginAdded, this._securityOriginAdded, this); 43a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginRemoved, this._securityOriginRemoved, this); 44a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent = target.fileSystemAgent(); 45a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.enable(); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._reset(); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.prototype = { 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _reset: function() 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var securityOrigin in this._fileSystemsForOrigin) 54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._removeOrigin(securityOrigin); 55a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var securityOrigins = this.target().resourceTreeModel.securityOrigins(); 56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < securityOrigins.length; ++i) 57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._addOrigin(securityOrigins[i]); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 61a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _securityOriginAdded: function(event) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var securityOrigin = /** @type {string} */ (event.data); 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._addOrigin(securityOrigin); 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 70a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _securityOriginRemoved: function(event) 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var securityOrigin = /** @type {string} */ (event.data); 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._removeOrigin(securityOrigin); 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} securityOrigin 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _addOrigin: function(securityOrigin) 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._fileSystemsForOrigin[securityOrigin] = {}; 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var types = ["persistent", "temporary"]; 86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < types.length; ++i) 87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._requestFileSystemRoot(securityOrigin, types[i], this._fileSystemRootReceived.bind(this, securityOrigin, types[i], this._fileSystemsForOrigin[securityOrigin])); 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} securityOrigin 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _removeOrigin: function(securityOrigin) 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 95926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var type in this._fileSystemsForOrigin[securityOrigin]) { 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var fileSystem = this._fileSystemsForOrigin[securityOrigin][type]; 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete this._fileSystemsForOrigin[securityOrigin][type]; 98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._fileSystemRemoved(fileSystem); 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete this._fileSystemsForOrigin[securityOrigin]; 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} origin 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} type 106a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !FileSystemAgent.Entry=)} callback 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _requestFileSystemRoot: function(origin, type, callback) 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 113a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Entry=} backendRootEntry 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function innerCallback(error, errorCode, backendRootEntry) 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(FileError.SECURITY_ERR); 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 121f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode, backendRootEntry); 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.requestFileSystemRoot(origin, type, innerCallback); 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 129a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.FileSystem} fileSystem 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _fileSystemAdded: function(fileSystem) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.FileSystemModel.EventTypes.FileSystemAdded, fileSystem); 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 137a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.FileSystem} fileSystem 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _fileSystemRemoved: function(fileSystem) 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.FileSystemModel.EventTypes.FileSystemRemoved, fileSystem); 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) refreshFileSystemList: function() 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 146926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._reset(); 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} origin 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} type 152a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object.<string, !WebInspector.FileSystemModel.FileSystem>} store 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 154a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Entry=} backendRootEntry 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _fileSystemRootReceived: function(origin, type, store, errorCode, backendRootEntry) 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!errorCode && backendRootEntry && this._fileSystemsForOrigin[origin] === store) { 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fileSystem = new WebInspector.FileSystemModel.FileSystem(this, origin, type, backendRootEntry); 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) store[type] = fileSystem; 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._fileSystemAdded(fileSystem); 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 166a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.Directory} directory 167a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !Array.<!WebInspector.FileSystemModel.Entry>=)} callback 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestDirectoryContent: function(directory, callback) 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestDirectoryContent(directory.url, this._directoryContentReceived.bind(this, directory, callback)); 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 176a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !Array.<!FileSystemAgent.Entry>=)} callback 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _requestDirectoryContent: function(url, callback) 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 183a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!FileSystemAgent.Entry>=} backendEntries 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function innerCallback(error, errorCode, backendEntries) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(FileError.SECURITY_ERR); 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 191f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (errorCode !== 0) { 193a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callback(errorCode); 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode, backendEntries); 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 200a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.requestDirectoryContent(url, innerCallback); 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 204a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.Directory} parentDirectory 205a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !Array.<!WebInspector.FileSystemModel.Entry>=)} callback 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 207a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!FileSystemAgent.Entry>=} backendEntries 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _directoryContentReceived: function(parentDirectory, callback, errorCode, backendEntries) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 211a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (!backendEntries) { 212a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callback(errorCode); 213a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return; 214a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 215a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var entries = []; 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < backendEntries.length; ++i) { 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (backendEntries[i].isDirectory) 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) entries.push(new WebInspector.FileSystemModel.Directory(this, parentDirectory.fileSystem, backendEntries[i])); 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) entries.push(new WebInspector.FileSystemModel.File(this, parentDirectory.fileSystem, backendEntries[i])); 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode, entries); 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 228a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.Entry} entry 229a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !FileSystemAgent.Metadata=)} callback 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestMetadata: function(entry, callback) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 236a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Metadata=} metadata 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function innerCallback(error, errorCode, metadata) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(FileError.SECURITY_ERR); 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 244f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode, metadata); 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 248a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.requestMetadata(entry.url, innerCallback); 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 252a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.File} file 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} readAsText 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} start 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} end 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} charset 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number, string=, string=)=} callback 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestFileContent: function(file, readAsText, start, end, charset, callback) 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestFileContent(file.url, readAsText, start, end, charset, callback); 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} readAsText 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} start 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} end 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} charset 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number, string=, string=)=} callback 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _requestFileContent: function(url, readAsText, start, end, charset, callback) 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} content 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} charset 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function innerCallback(error, errorCode, content, charset) 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(FileError.SECURITY_ERR); 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 287f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode, content, charset); 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 292a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.requestFileContent(url, readAsText, start, end, charset, innerCallback); 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 295a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.Entry} entry 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number)=} callback 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deleteEntry: function(entry, callback) 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fileSystemModel = this; 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (entry === entry.fileSystem.root) 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._deleteEntry(entry.url, hookFileSystemDeletion); 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._deleteEntry(entry.url, callback); 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function hookFileSystemDeletion(errorCode) 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode); 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!errorCode) 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fileSystemModel._removeFileSystem(entry.fileSystem); 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number)=} callback 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _deleteEntry: function(url, callback) 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorCode 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function innerCallback(error, errorCode) 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(FileError.SECURITY_ERR); 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 331f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(errorCode); 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 336a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this._agent.deleteEntry(url, innerCallback); 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 340a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.FileSystem} fileSystem 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _removeFileSystem: function(fileSystem) 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var origin = fileSystem.origin; 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = fileSystem.type; 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._fileSystemsForOrigin[origin] && this._fileSystemsForOrigin[origin][type]) { 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._fileSystemsForOrigin[origin][type]; 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._fileSystemRemoved(fileSystem); 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (Object.isEmpty(this._fileSystemsForOrigin[origin])) 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._fileSystemsForOrigin[origin]; 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 355197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch __proto__: WebInspector.SDKObject.prototype 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.EventTypes = { 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FileSystemAdded: "FileSystemAdded", 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FileSystemRemoved: "FileSystemRemoved" 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 366a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel} fileSystemModel 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} origin 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} type 369a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Entry} backendRootEntry 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.FileSystem = function(fileSystemModel, origin, type, backendRootEntry) 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.origin = origin; 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.type = type; 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.root = new WebInspector.FileSystemModel.Directory(fileSystemModel, this, backendRootEntry); 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.FileSystem.prototype = { 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @type {string} 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get name() 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "filesystem:" + this.origin + "/" + this.type; 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 391a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel} fileSystemModel 392a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.FileSystem} fileSystem 393a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Entry} backendEntry 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.Entry = function(fileSystemModel, fileSystem, backendEntry) 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._fileSystemModel = fileSystemModel; 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._fileSystem = fileSystem; 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._url = backendEntry.url; 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._name = backendEntry.name; 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isDirectory = backendEntry.isDirectory; 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 406a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.Entry} x 407a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.Entry} y 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {number} 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.Entry.compare = function(x, y) 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (x.isDirectory != y.isDirectory) 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return y.isDirectory ? 1 : -1; 414926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return x.name.compareTo(y.name); 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.Entry.prototype = { 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 419a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @type {!WebInspector.FileSystemModel} 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get fileSystemModel() 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._fileSystemModel; 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 427a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @type {!WebInspector.FileSystemModel.FileSystem} 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get fileSystem() 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._fileSystem; 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @type {string} 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get url() 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._url; 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @type {string} 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get name() 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._name; 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @type {boolean} 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isDirectory() 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._isDirectory; 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 459a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !FileSystemAgent.Metadata)} callback 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestMetadata: function(callback) 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.fileSystemModel.requestMetadata(this, callback); 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number)} callback 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deleteEntry: function(callback) 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.fileSystemModel.deleteEntry(this, callback); 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.FileSystemModel.Entry} 478a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel} fileSystemModel 479a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.FileSystem} fileSystem 480a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Entry} backendEntry 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.Directory = function(fileSystemModel, fileSystem, backendEntry) 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.FileSystemModel.Entry.call(this, fileSystemModel, fileSystem, backendEntry); 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.Directory.prototype = { 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 489a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(number, !Array.<!WebInspector.FileSystemModel.Directory>)} callback 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestDirectoryContent: function(callback) 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.fileSystemModel.requestDirectoryContent(this, callback); 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.FileSystemModel.Entry.prototype 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.FileSystemModel.Entry} 502a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel} fileSystemModel 503a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.FileSystemModel.FileSystem} fileSystem 504a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!FileSystemAgent.Entry} backendEntry 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.File = function(fileSystemModel, fileSystem, backendEntry) 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.FileSystemModel.Entry.call(this, fileSystemModel, fileSystem, backendEntry); 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._mimeType = backendEntry.mimeType; 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._resourceType = WebInspector.resourceTypes[backendEntry.resourceType]; 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isTextFile = backendEntry.isTextFile; 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.FileSystemModel.File.prototype = { 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @type {string} 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get mimeType() 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._mimeType; 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 525a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @type {!WebInspector.ResourceType} 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get resourceType() 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._resourceType; 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @type {boolean} 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get isTextFile() 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._isTextFile; 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} readAsText 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} start 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} end 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} charset 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(number, string=)=} callback 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestFileContent: function(readAsText, start, end, charset, callback) 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.fileSystemModel.requestFileContent(this, readAsText, start, end, charset, callback); 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.FileSystemModel.Entry.prototype 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 554