Changeset 252200 in webkit
- Timestamp:
- Nov 7, 2019 12:17:59 PM (4 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r252199 r252200 1 2019-11-07 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: Local Resource Overrides: automatically show a file picker when attempting to create an override for non-text resources 4 https://bugs.webkit.org/show_bug.cgi?id=203917 5 6 Reviewed by Timothy Hatcher. 7 8 Since there's no way to edit non-text resources (e.g. images, fonts, etc.) in Web Inspector, 9 when creating a local override for non-text resources, default to showing a file picker and 10 creating a local override from the content and MIME type of whatever file is chosen. 11 12 Still provide a way (shift-click) to create a local override for non-text resources from the 13 resource's contents, as that can be useful if the user just wants to change some headers. 14 15 * UserInterface/Models/Resource.js: 16 (WI.Resource.prototype.async createLocalResourceOverride): 17 18 * UserInterface/Views/ResourceContentView.js: 19 (WI.ResourceContentView): 20 (WI.ResourceContentView.prototype.get createLocalResourceOverrideTooltip): Added. 21 (WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Added. 22 (WI.ResourceContentView.prototype.async _getContentForLocalResourceOverrideFromFile): Added. 23 (WI.ResourceContentView.prototype._handleCreateLocalResourceOverride): 24 (WI.ResourceContentView.prototype._handleImportLocalResourceOverride): 25 (WI.ResourceContentView.prototype.localResourceOverrideInitialContent): Deleted. 26 (WI.ResourceContentView.prototype.async _handleCreateLocalResourceOverride): Deleted. 27 28 * UserInterface/Views/TextResourceContentView.js: 29 (WI.TextResourceContentView.prototype.get createLocalResourceOverrideTooltip): Added. 30 (WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Added. 31 (WI.TextResourceContentView.prototype.localResourceOverrideInitialContent): Deleted. 32 33 * Localizations/en.lproj/localizedStrings.js: 34 1 35 2019-11-07 Devin Rousso <drousso@apple.com> 2 36 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r252199 r252200 251 251 localizedStrings["Click Listener"] = "Click Listener"; 252 252 localizedStrings["Click to close this tab"] = "Click to close this tab"; 253 localizedStrings["Click to create a Local Override from this content"] = "Click to create a Local Override from this content"; 254 localizedStrings["Click to import a file and create a Local Override\nShift-click to create a Local Override from this content"] = "Click to import a file and create a Local Override\nShift-click to create a Local Override from this content"; 253 255 localizedStrings["Click to select a color\nShift-click to switch color formats"] = "Click to select a color\nShift-click to switch color formats"; 254 256 localizedStrings["Click to view variable value\nShift-click to replace variable with value"] = "Click to view variable value\nShift-click to replace variable with value"; -
trunk/Source/WebInspectorUI/UserInterface/Models/Resource.js
r251227 r252200 1059 1059 } 1060 1060 1061 async createLocalResourceOverride({initial Content} = {})1061 async createLocalResourceOverride({initialMIMEType, initialBase64Encoded, initialContent} = {}) 1062 1062 { 1063 1063 console.assert(!this.isLocalResourceOverride); … … 1065 1065 1066 1066 let {rawContent, rawBase64Encoded} = await this.requestContent(); 1067 let content = initialContent !== undefined ? initialContent : rawContent;1068 1067 1069 1068 return WI.LocalResourceOverride.create({ 1070 1069 url: this.url, 1071 mimeType: this.mimeType,1072 content ,1073 base64Encoded: rawBase64Encoded,1070 mimeType: initialMIMEType !== undefined ? initialMIMEType : this.mimeType, 1071 content: initialContent !== undefined ? initialContent : rawContent, 1072 base64Encoded: initialBase64Encoded !== undefined ? initialBase64Encoded : rawBase64Encoded, 1074 1073 statusCode: this.statusCode, 1075 1074 statusText: this.statusText, -
trunk/Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js
r251144 r252200 78 78 this._localResourceOverrideBannerView = new WI.LocalResourceOverrideWarningView(resource); 79 79 80 this._createLocalResourceOverrideButtonNavigationItem = new WI.ButtonNavigationItem("create-local-resource-override", WI.UIString("Create Local Override"), "Images/NavigationItemNetworkOverride.svg", 13, 14);80 this._createLocalResourceOverrideButtonNavigationItem = new WI.ButtonNavigationItem("create-local-resource-override", this.createLocalResourceOverrideTooltip, "Images/NavigationItemNetworkOverride.svg", 13, 14); 81 81 this._createLocalResourceOverrideButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._handleCreateLocalResourceOverride, this); 82 82 this._createLocalResourceOverrideButtonNavigationItem.enabled = false; // Enabled when the content is available. … … 123 123 } 124 124 125 localResourceOverrideInitialContent() 126 { 127 // Implemented by subclasses if needed. 128 return {}; 125 get createLocalResourceOverrideTooltip() 126 { 127 return WI.UIString("Click to import a file and create a Local Override\nShift-click to create a Local Override from this content"); 128 } 129 130 requestLocalResourceOverrideInitialContent(callback) 131 { 132 // Overridden by subclasses if needed. 133 134 WI.FileUtilities.import(async (fileList) => { 135 console.assert(fileList.length === 1); 136 137 this._getContentForLocalResourceOverrideFromFile(fileList[0], ({mimeType, base64Encoded, content}) => { 138 callback({ 139 initialMIMEType: mimeType, 140 initialBase64Encoded: base64Encoded, 141 initialContent: content, 142 }); 143 }); 144 }); 129 145 } 130 146 … … 231 247 } 232 248 233 async _handleCreateLocalResourceOverride(event) 234 { 235 let initialContent = this.localResourceOverrideInitialContent(); 236 let localResourceOverride = await this._resource.createLocalResourceOverride(initialContent); 237 WI.networkManager.addLocalResourceOverride(localResourceOverride); 238 WI.showLocalResourceOverride(localResourceOverride); 249 async _getContentForLocalResourceOverrideFromFile(file, callback) 250 { 251 let initialMIMEType = file.type || WI.mimeTypeForFileExtension(WI.fileExtensionForFilename(file.name)); 252 if (WI.shouldTreatMIMETypeAsText(initialMIMEType)) { 253 await WI.FileUtilities.readText(file, async ({text}) => { 254 await callback({ 255 mimeType: initialMIMEType, 256 base64Encoded: false, 257 content: text, 258 }); 259 }); 260 } else { 261 await WI.FileUtilities.readData(file, async ({mimeType, base64Encoded, content}) => { 262 await callback({mimeType, base64Encoded, content}); 263 }); 264 } 265 } 266 267 _handleCreateLocalResourceOverride(event) 268 { 269 let {nativeEvent} = event.data; 270 271 let createLocalResourceOverride = async (initialContent) => { 272 let localResourceOverride = await this._resource.createLocalResourceOverride(initialContent); 273 WI.networkManager.addLocalResourceOverride(localResourceOverride); 274 WI.showLocalResourceOverride(localResourceOverride); 275 }; 276 277 if (nativeEvent.shiftKey) 278 createLocalResourceOverride({}); 279 else 280 this.requestLocalResourceOverrideInitialContent(createLocalResourceOverride); 239 281 } 240 282 … … 250 292 251 293 let revision = localResourceOverride.localResource.currentRevision; 252 253 let file = fileList[0]; 254 let mimeType = file.type || WI.mimeTypeForFileExtension(WI.fileExtensionForFilename(file.name)); 255 if (WI.shouldTreatMIMETypeAsText(mimeType)) { 256 await WI.FileUtilities.readText(file, ({text}) => { 257 revision.updateRevisionContent(text, {base64Encoded: false, mimeType}); 258 }); 259 } else { 260 await WI.FileUtilities.readData(file, ({dataURL, mimeType, base64Encoded, content}) => { 261 revision.updateRevisionContent(content, {base64Encoded, mimeType}); 262 }); 263 } 294 await this._getContentForLocalResourceOverrideFromFile(fileList[0], ({mimeType, base64Encoded, content}) => { 295 revision.updateRevisionContent(content, {base64Encoded, mimeType}); 296 }); 264 297 265 298 if (!this.showingLocalResourceOverride) -
trunk/Source/WebInspectorUI/UserInterface/Views/TextResourceContentView.js
r251024 r252200 145 145 } 146 146 147 localResourceOverrideInitialContent() 148 { 149 return {initialContent: this._textEditor.string}; 147 get createLocalResourceOverrideTooltip() 148 { 149 return WI.UIString("Click to create a Local Override from this content"); 150 } 151 152 requestLocalResourceOverrideInitialContent(callback) 153 { 154 callback({initialContent: this._textEditor.string}); 150 155 } 151 156
Note: See TracChangeset
for help on using the changeset viewer.