1c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)/*
2c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved.
3c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) *
4c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without
5c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * modification, are permitted provided that the following conditions are
6c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * met:
7c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) *
8c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) *     * Redistributions of source code must retain the above copyright
9c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * notice, this list of conditions and the following disclaimer.
10c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) *     * Redistributions in binary form must reproduce the above
11c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer
12c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * in the documentation and/or other materials provided with the
13c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * distribution.
14c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) *     * Neither the name of Google Inc. nor the names of its
15c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * contributors may be used to endorse or promote products derived from
16c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * this software without specific prior written permission.
17c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) *
18c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */
30c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
31c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)/**
32c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @constructor
33c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @extends {WebInspector.DialogDelegate}
34c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) * @param {string} fileSystemPath
35c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */
36c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.EditFileSystemDialog = function(fileSystemPath)
37c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles){
38c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    WebInspector.DialogDelegate.call(this);
39c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._fileSystemPath = fileSystemPath;
40c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
41c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this.element = document.createElement("div");
42c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this.element.className = "edit-file-system-dialog";
43c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
44c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var header = this.element.createChild("div", "header");
45c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var headerText = header.createChild("span");
46c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    headerText.textContent = "Edit file system";
47c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
48c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var closeButton = header.createChild("div", "close-button-gray done-button");
49c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    closeButton.addEventListener("click", this._onDoneClick.bind(this), false);
50c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
51c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var contents = this.element.createChild("div", "contents");
52c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
53c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    WebInspector.isolatedFileSystemManager.mapping().addEventListener(WebInspector.FileSystemMapping.Events.FileMappingAdded, this._fileMappingAdded, this);
54c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    WebInspector.isolatedFileSystemManager.mapping().addEventListener(WebInspector.FileSystemMapping.Events.FileMappingRemoved, this._fileMappingRemoved, this);
55c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    WebInspector.isolatedFileSystemManager.mapping().addEventListener(WebInspector.FileSystemMapping.Events.ExcludedFolderAdded, this._excludedFolderAdded, this);
56c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    WebInspector.isolatedFileSystemManager.mapping().addEventListener(WebInspector.FileSystemMapping.Events.ExcludedFolderRemoved, this._excludedFolderRemoved, this);
57c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
58c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var blockHeader = contents.createChild("div", "block-header");
59c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    blockHeader.textContent = "Mappings";
60c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._fileMappingsSection = contents.createChild("div", "file-mappings-section");
61c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._fileMappingsListContainer = this._fileMappingsSection.createChild("div", "settings-list-container");
62c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var entries = WebInspector.isolatedFileSystemManager.mapping().mappingEntries(this._fileSystemPath);
63c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
64c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._fileMappingsList = new WebInspector.EditableSettingsList(["url", "path"], this._fileMappingValuesProvider.bind(this), this._fileMappingValidate.bind(this), this._fileMappingEdit.bind(this));
65c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._fileMappingsList.addEventListener(WebInspector.SettingsList.Events.Removed, this._fileMappingRemovedfromList.bind(this));
66c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
67a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    this._fileMappingsList.element.classList.add("file-mappings-list");
68c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._fileMappingsListContainer.appendChild(this._fileMappingsList.element);
69c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
70c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._entries = {};
71c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    for (var i = 0; i < entries.length; ++i)
72c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._addMappingRow(entries[i]);
73c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
74c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    blockHeader = contents.createChild("div", "block-header");
75c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    blockHeader.textContent = "Excluded folders";
76c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._excludedFolderListSection = contents.createChild("div", "excluded-folders-section");
77c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._excludedFolderListContainer = this._excludedFolderListSection.createChild("div", "settings-list-container");
78c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var excludedFolderEntries = WebInspector.isolatedFileSystemManager.mapping().excludedFolders(fileSystemPath);
79c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
80c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._excludedFolderList = new WebInspector.EditableSettingsList(["path"], this._excludedFolderValueProvider.bind(this), this._excludedFolderValidate.bind(this), this._excludedFolderEdit.bind(this));
81c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._excludedFolderList.addEventListener(WebInspector.SettingsList.Events.Removed, this._excludedFolderRemovedfromList.bind(this));
82a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    this._excludedFolderList.element.classList.add("excluded-folders-list");
83c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._excludedFolderListContainer.appendChild(this._excludedFolderList.element);
84c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this._excludedFolderEntries = new StringMap();
85c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    for (var i = 0; i < excludedFolderEntries.length; ++i)
86c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._addExcludedFolderRow(excludedFolderEntries[i]);
87c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
88c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    this.element.tabIndex = 0;
89c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)}
90c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
91c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.EditFileSystemDialog.show = function(element, fileSystemPath)
92c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles){
93c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    WebInspector.Dialog.show(element, new WebInspector.EditFileSystemDialog(fileSystemPath));
94c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    var glassPane = document.getElementById("glass-pane");
95a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    glassPane.classList.add("settings-glass-pane");
96c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)}
97c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
98c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)WebInspector.EditFileSystemDialog.prototype = {
99c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
100a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Element} element
101c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
102c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    show: function(element)
103c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
104c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        element.appendChild(this.element);
105a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        this.element.classList.add("dialog-contents");
106a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        element.classList.add("settings-dialog");
107a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        element.classList.add("settings-tab");
108c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._dialogElement = element;
109c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
110c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
111c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _resize: function()
112c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
113c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!this._dialogElement)
114c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
115c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
116c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        const width = 540;
117c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        const minHeight = 150;
118c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var maxHeight = document.body.offsetHeight - 10;
119c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        maxHeight = Math.max(minHeight, maxHeight);
120c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._dialogElement.style.maxHeight = maxHeight + "px";
121c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._dialogElement.style.width = width + "px";
122c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
123c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
124c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
125a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Element} element
126a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Element} relativeToElement
127c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
128c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    position: function(element, relativeToElement)
129c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
130c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._resize();
131c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
132c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
133c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    willHide: function(event)
134c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
135c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
136c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
137c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _fileMappingAdded: function(event)
138c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
139a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        var entry = /** @type {!WebInspector.FileSystemMapping.Entry} */ (event.data);
140c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._addMappingRow(entry);
141c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
142c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
143c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _fileMappingRemoved: function(event)
144c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
145a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        var entry = /** @type {!WebInspector.FileSystemMapping.Entry} */ (event.data);
146c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (this._fileSystemPath !== entry.fileSystemPath)
147c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
148c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        delete this._entries[entry.urlPrefix];
149c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (this._fileMappingsList.itemForId(entry.urlPrefix))
150c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            this._fileMappingsList.removeItem(entry.urlPrefix);
151c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._resize();
152c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
153c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
154c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _fileMappingValuesProvider: function(itemId, columnId)
155c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
156c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!itemId)
157c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return "";
158c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var entry = this._entries[itemId];
159c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        switch (columnId) {
160c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        case "url":
161c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return entry.urlPrefix;
162c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        case "path":
163c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return entry.pathPrefix;
164c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        default:
165c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            console.assert("Should not be reached.");
166c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        }
167c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return "";
168c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
169c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
170c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
171c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} itemId
172a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Object} data
173c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
174c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _fileMappingValidate: function(itemId, data)
175c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
176c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var oldPathPrefix = itemId ? this._entries[itemId].pathPrefix : null;
177c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return this._validateMapping(data["url"], itemId, data["path"], oldPathPrefix);
178c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
179c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
180c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
181c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} itemId
182a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Object} data
183c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
184c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _fileMappingEdit: function(itemId, data)
185c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
186c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (itemId) {
187c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            var urlPrefix = itemId;
188c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            var pathPrefix = this._entries[itemId].pathPrefix;
189c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            var fileSystemPath = this._entries[itemId].fileSystemPath;
190c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            WebInspector.isolatedFileSystemManager.mapping().removeFileMapping(fileSystemPath, urlPrefix, pathPrefix);
191c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        }
192c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._addFileMapping(data["url"], data["path"]);
193c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
194c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
195c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
196c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} urlPrefix
197c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} allowedURLPrefix
198c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} path
199c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} allowedPathPrefix
200c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
201c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _validateMapping: function(urlPrefix, allowedURLPrefix, path, allowedPathPrefix)
202c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
203c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var columns = [];
204c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!this._checkURLPrefix(urlPrefix, allowedURLPrefix))
205c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            columns.push("url");
206c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!this._checkPathPrefix(path, allowedPathPrefix))
207c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            columns.push("path");
208c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return columns;
209c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
210c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
211c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
212a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!WebInspector.Event} event
213c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
214c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _fileMappingRemovedfromList: function(event)
215c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
216c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var urlPrefix = /** @type{?string} */ (event.data);
217c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!urlPrefix)
218c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
219c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
220c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var entry = this._entries[urlPrefix];
221c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        WebInspector.isolatedFileSystemManager.mapping().removeFileMapping(entry.fileSystemPath, entry.urlPrefix, entry.pathPrefix);
222c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
223c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
224c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
225c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} urlPrefix
226c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} pathPrefix
227c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @return {boolean}
228c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
229c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _addFileMapping: function(urlPrefix, pathPrefix)
230c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
231c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var normalizedURLPrefix = this._normalizePrefix(urlPrefix);
232c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var normalizedPathPrefix = this._normalizePrefix(pathPrefix);
233c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        WebInspector.isolatedFileSystemManager.mapping().addFileMapping(this._fileSystemPath, normalizedURLPrefix, normalizedPathPrefix);
234c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._fileMappingsList.selectItem(normalizedURLPrefix);
235c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return true;
236c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
237c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
238c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
239c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} prefix
240c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @return {string}
241c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
242c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _normalizePrefix: function(prefix)
243c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
244c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!prefix)
245c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return "";
246c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return prefix + (prefix[prefix.length - 1] === "/" ? "" : "/");
247c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
248c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
249c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _addMappingRow: function(entry)
250c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
251c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var fileSystemPath = entry.fileSystemPath;
252c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var urlPrefix = entry.urlPrefix;
253c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!this._fileSystemPath || this._fileSystemPath !== fileSystemPath)
254c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
255c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
256c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._entries[urlPrefix] = entry;
257c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var fileMappingListItem = this._fileMappingsList.addItem(urlPrefix, null);
258c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._resize();
259c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
260c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
261c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _excludedFolderAdded: function(event)
262c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
263a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        var entry = /** @type {!WebInspector.FileSystemMapping.ExcludedFolderEntry} */ (event.data);
264c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._addExcludedFolderRow(entry);
265c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
266c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
267c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _excludedFolderRemoved: function(event)
268c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
269a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        var entry = /** @type {!WebInspector.FileSystemMapping.ExcludedFolderEntry} */ (event.data);
270c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var fileSystemPath = entry.fileSystemPath;
271c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!fileSystemPath || this._fileSystemPath !== fileSystemPath)
272c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
273c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        delete this._excludedFolderEntries[entry.path];
274c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (this._excludedFolderList.itemForId(entry.path))
275c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            this._excludedFolderList.removeItem(entry.path);
276c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
277c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
278c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _excludedFolderValueProvider: function(itemId, columnId)
279c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
280c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return itemId;
281c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
282c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
283c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
284c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} itemId
285a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Object} data
286c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
287c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _excludedFolderValidate: function(itemId, data)
288c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
289c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var fileSystemPath = this._fileSystemPath;
290c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var columns = [];
291c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!this._validateExcludedFolder(data["path"], itemId))
292c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            columns.push("path");
293c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return columns;
294c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
295c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
296c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
297c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} path
298c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} allowedPath
299c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @return {boolean}
300c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
301c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _validateExcludedFolder: function(path, allowedPath)
302c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
303c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return !!path && (path === allowedPath || !this._excludedFolderEntries.contains(path));
304c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
305c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
306c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
307c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} itemId
308a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!Object} data
309c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
310c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _excludedFolderEdit: function(itemId, data)
311c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
312c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var fileSystemPath = this._fileSystemPath;
313c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (itemId)
314c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            WebInspector.isolatedFileSystemManager.mapping().removeExcludedFolder(fileSystemPath, itemId);
315c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var excludedFolderPath = data["path"];
316c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        WebInspector.isolatedFileSystemManager.mapping().addExcludedFolder(fileSystemPath, excludedFolderPath);
317c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
318c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
319c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
320a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!WebInspector.Event} event
321c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
322c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _excludedFolderRemovedfromList: function(event)
323c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
324c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var itemId = /** @type{?string} */ (event.data);
325c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!itemId)
326c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
327c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        WebInspector.isolatedFileSystemManager.mapping().removeExcludedFolder(this._fileSystemPath, itemId);
328c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
329c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
330c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
331a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)     * @param {!WebInspector.FileSystemMapping.ExcludedFolderEntry} entry
332c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
333c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _addExcludedFolderRow: function(entry)
334c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
335c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var fileSystemPath = entry.fileSystemPath;
336c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!fileSystemPath || this._fileSystemPath !== fileSystemPath)
337c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return;
338c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var path = entry.path;
339c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._excludedFolderEntries.put(path, entry);
340c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        this._excludedFolderList.addItem(path, null);
341c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
342c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
343c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
344c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} value
345c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} allowedPrefix
346c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @return {boolean}
347c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
348c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _checkURLPrefix: function(value, allowedPrefix)
349c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
350c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var prefix = this._normalizePrefix(value);
351c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return !!prefix && (prefix === allowedPrefix || !this._entries[prefix]);
352c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
353c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
354c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    /**
355c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {string} value
356c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @param {?string} allowedPrefix
357c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     * @return {boolean}
358c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)     */
359c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _checkPathPrefix: function(value, allowedPrefix)
360c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
361c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        var prefix = this._normalizePrefix(value);
362c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (!prefix)
363c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return false;
364c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        if (prefix === allowedPrefix)
365c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            return true;
366c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        for (var urlPrefix in this._entries) {
367c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            var entry = this._entries[urlPrefix];
368c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)            if (urlPrefix && entry.pathPrefix === prefix)
369c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)                return false;
370c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        }
371c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        return true;
372c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
373c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
374c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    focus: function()
375c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
376c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        WebInspector.setCurrentFocusElement(this.element);
377c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
378c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
379c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    _onDoneClick: function()
380c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
381c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        WebInspector.Dialog.hide();
382c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
383c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
384c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    onEnter: function()
385c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    {
386c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    },
387c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
388c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    __proto__: WebInspector.DialogDelegate.prototype
389c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)}
390