Web Inspector: PrettyPrinting tool should have save button
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Oct 2013 23:53:41 +0000 (23:53 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Oct 2013 23:53:41 +0000 (23:53 +0000)
https://bugs.webkit.org/show_bug.cgi?id=123371

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2013-10-25
Reviewed by Timothy Hatcher.

Add buttons to save as a URL to share or to save/clear to
localStorage for easier reloads testing local changes.

* Tools/PrettyPrinting/index.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@158072 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/Tools/PrettyPrinting/index.html

index 45a7db9a706dca88564d90ac04bd19abc295a02c..0715817ec83c6801e78b0344ffa228d6744863ca 100644 (file)
@@ -1,3 +1,15 @@
+2013-10-25  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: PrettyPrinting tool should have save button
+        https://bugs.webkit.org/show_bug.cgi?id=123371
+
+        Reviewed by Timothy Hatcher.
+
+        Add buttons to save as a URL to share or to save/clear to
+        localStorage for easier reloads testing local changes.
+
+        * Tools/PrettyPrinting/index.html:
+
 2013-10-25  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: Command+Click on url(…) should go to image not source line
index 0a82949abe8797ab8acc56f29bfce02cd492f3e4..fc331ee321d359af67045ee9fcf1189543932af8 100644 (file)
@@ -17,8 +17,6 @@
 
     <h1>Debug Pretty Printing</h1>
 
-    <!-- FIXME: There should be a "save" button that saves the mode and content, so reloading will restore that state -->
-
     <!-- Controls -->
     <select id="mode">
         <option selected value="text/javascript">JavaScript</option>
@@ -29,6 +27,9 @@
     <button id="clear">Clear</button>
     <button id="select-output">Select Output</button>
     <button id="run-again">Run Again</button>
+    <button id="save-as-url">Save URL</button>
+    <button id="save-local-storage">Save to Storage</button>
+    <button id="clear-local-storage">Clear Storage</button>
     <small id="time"></small>
 
     <br><br>
         lineNumbers: true,
     });
 
-    // Initial value.
-    var str = "(function() { var a=1; return a+1; })();";
-    cm.setValue(str);
+    // Initial values from URL.
+    var queryParams = {};
+    if (window.location.search.length > 0) {
+        var searchString = window.location.search.substring(1);
+        var groups = searchString.split("&");
+        for (var i = 0; i < groups.length; ++i) {
+            var pair = groups[i].split("=");
+            queryParams[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
+        }
+    }
+
+    // Initial mode and string.
+    var mode = "text/javascript";
+    var content = "(function() { var a=1; return a+1; })();";
+    var updatePicker = false;
+    if (queryParams.content || queryParams.mode) {
+        content = queryParams.content || "";
+        mode = queryParams.mode || "text/javascript";
+        updatePicker = true;
+    } else if (localStorage.content || localStorage.mode) {
+        content = localStorage.content || "";
+        mode = localStorage.mode || "text/javascript";
+        updatePicker = true;
+    }
 
-    // Setup and changing the mode.
-    cm.setOption("mode", "text/javascript");
+    // Initial mode picker value.
     var modePicker = document.getElementById("mode");
+    if (updatePicker) {
+        for (var i = 0; i < modePicker.options.length; ++i) {
+            if (modePicker.options[i]) {
+                modePicker.options[i].selected = true;
+                break;
+            }
+        }
+    }
+
+    // Set on CodeMirror.
+    cm.setValue(content);
+    cm.setOption("mode", mode);
+
+    // Changing the mode.
     modePicker.addEventListener("change", function(event) {
         cm.setValue("");
         cm.setOption("mode", modePicker.value);
         refresh();
     });
 
+    // Save as URL button.
+    document.getElementById("save-as-url").addEventListener("click", function(event) {
+        var mode = modePicker.value;
+        var content = cm.getValue();
+        window.location.search = "?mode=" + window.encodeURIComponent(mode) + "&content=" + window.encodeURIComponent(content);
+    });
+
+    // Save to localStorage.
+    document.getElementById("save-local-storage").addEventListener("click", function(event) {
+        localStorage.mode = modePicker.value;
+        localStorage.content = cm.getValue();
+    });
+
+    // Clear localStorage.
+    document.getElementById("clear-local-storage").addEventListener("click", function(event) {
+        localStorage.removeItem("mode");
+        localStorage.removeItem("content");
+    });
+
     // Button helpers.
     var buttons = ["mode", "populate", "run-tests", "clear", "select-output", "run-again"];
     function disableButtons() {
     setTimeout(refresh);
 
     // Tests.
-    function runTests() {        
+    function runTests() {
         disableButtons();
         function completedCallback() {
             enableButtons();