Title: [249248] trunk/Source/WebInspectorUI
- Revision
- 249248
- Author
- pecor...@apple.com
- Date
- 2019-08-29 01:24:19 -0700 (Thu, 29 Aug 2019)
Log Message
Web Inspector: Import file pickers sometimes do not import
https://bugs.webkit.org/show_bug.cgi?id=201290
<rdar://problem/54826117>
Reviewed by Devin Rousso.
* UserInterface/Base/FileUtilities.js:
(WI.FileUtilities.importText):
(WI.FileUtilities.importJSON):
Keep the input element alive so it doesn't get garbage collected,
which makes the file chooser do nothing.
(WI.FileUtilities.save):
(WI.FileUtilities.async.readText):
Place read operations after event handlers are setup in case the
read operations can happen synchronously and events may not fire.
Modified Paths
Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (249247 => 249248)
--- trunk/Source/WebInspectorUI/ChangeLog 2019-08-29 06:49:28 UTC (rev 249247)
+++ trunk/Source/WebInspectorUI/ChangeLog 2019-08-29 08:24:19 UTC (rev 249248)
@@ -1,3 +1,22 @@
+2019-08-29 Joseph Pecoraro <pecor...@apple.com>
+
+ Web Inspector: Import file pickers sometimes do not import
+ https://bugs.webkit.org/show_bug.cgi?id=201290
+ <rdar://problem/54826117>
+
+ Reviewed by Devin Rousso.
+
+ * UserInterface/Base/FileUtilities.js:
+ (WI.FileUtilities.importText):
+ (WI.FileUtilities.importJSON):
+ Keep the input element alive so it doesn't get garbage collected,
+ which makes the file chooser do nothing.
+
+ (WI.FileUtilities.save):
+ (WI.FileUtilities.async.readText):
+ Place read operations after event handlers are setup in case the
+ read operations can happen synchronously and events may not fire.
+
2019-08-28 Devin Rousso <drou...@apple.com>
Web Inspector: REGRESSION(r249078): _javascript_ autocomplete doesn't work when evaluating properties of values
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/FileUtilities.js (249247 => 249248)
--- trunk/Source/WebInspectorUI/UserInterface/Base/FileUtilities.js 2019-08-29 06:49:28 UTC (rev 249247)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/FileUtilities.js 2019-08-29 08:24:19 UTC (rev 249248)
@@ -82,7 +82,6 @@
}
let fileReader = new FileReader;
- fileReader.readAsDataURL(saveData.content);
fileReader.addEventListener("loadend", () => {
let dataURLComponents = parseDataURL(fileReader.result);
@@ -89,28 +88,37 @@
const base64Encoded = true;
InspectorFrontendHost.save(suggestedName, dataURLComponents.data, base64Encoded, forceSaveAs || saveData.forceSaveAs);
});
+ fileReader.readAsDataURL(saveData.content);
}
static importText(callback)
{
- let inputElement = document.createElement("input");
- inputElement.type = "file";
- inputElement.multiple = true;
- inputElement.addEventListener("change", (event) => {
- WI.FileUtilities.readText(inputElement.files, callback);
- });
- inputElement.click();
+ if (!FileUtilities._importTextInputElement) {
+ let inputElement = FileUtilities._importTextInputElement = document.createElement("input");
+ inputElement.type = "file";
+ inputElement.multiple = true;
+ inputElement.addEventListener("change", (event) => {
+ WI.FileUtilities.readText(inputElement.files, callback);
+ });
+ }
+
+ FileUtilities._importTextInputElement.value = null;
+ FileUtilities._importTextInputElement.click();
}
static importJSON(callback)
{
- let inputElement = document.createElement("input");
- inputElement.type = "file";
- inputElement.multiple = true;
- inputElement.addEventListener("change", (event) => {
- WI.FileUtilities.readJSON(inputElement.files, callback);
- });
- inputElement.click();
+ if (!FileUtilities._importJSONInputElement) {
+ let inputElement = FileUtilities._importJSONInputElement = document.createElement("input");
+ inputElement.type = "file";
+ inputElement.multiple = true;
+ inputElement.addEventListener("change", (event) => {
+ WI.FileUtilities.readJSON(inputElement.files, callback);
+ });
+ }
+
+ FileUtilities._importJSONInputElement.value = null;
+ FileUtilities._importJSONInputElement.click();
}
static async readText(fileOrList, callback)
@@ -124,9 +132,6 @@
files = Array.from(fileOrList);
for (let file of files) {
- let reader = new FileReader;
- reader.readAsText(file);
-
let result = {
filename: file.name,
};
@@ -133,11 +138,13 @@
try {
await new Promise((resolve, reject) => {
+ let reader = new FileReader;
reader.addEventListener("loadend", (event) => {
result.text = reader.result;
resolve(event);
});
reader.addEventListener("error", reject);
+ reader.readAsText(file);
});
} catch (e) {
result.error = e;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes