Web Inspector: restore partial front-end compilability
authorpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Oct 2011 09:16:12 +0000 (09:16 +0000)
committerpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Oct 2011 09:16:12 +0000 (09:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=69221

Removed unused isWhitespace; introduced missing classes in Inspector.json;
generated externs for the protocol types along with the commands.

Patch by Pavel Feldman <pfeldman@chromium.org> on 2011-10-03
Reviewed by Yury Semikhatsky.

* inspector/Inspector.json:
* inspector/compile-front-end.sh:
* inspector/front-end/DOMAgent.js:
(WebInspector.DOMAgent):
(WebInspector.DOMAgent.prototype._dispatchWhenDocumentAvailable.onDocumentAvailable):
(WebInspector.DOMAgent.prototype._dispatchWhenDocumentAvailable):
* inspector/front-end/ElementsPanel.js:
(WebInspector.ElementsPanel.prototype.updateBreadcrumb):
* inspector/front-end/ElementsTreeOutline.js:
():
* inspector/front-end/Object.js:
* inspector/front-end/Popover.js:
(WebInspector.PopoverHelper.prototype._mouseMove):
* inspector/front-end/View.js:
* inspector/front-end/externs.js:
(Array.prototype.remove):
* inspector/generate-protocol-externs:

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

Source/WebCore/ChangeLog
Source/WebCore/inspector/Inspector.json
Source/WebCore/inspector/compile-front-end.sh
Source/WebCore/inspector/front-end/DOMAgent.js
Source/WebCore/inspector/front-end/ElementsPanel.js
Source/WebCore/inspector/front-end/ElementsTreeOutline.js
Source/WebCore/inspector/front-end/Object.js
Source/WebCore/inspector/front-end/Popover.js
Source/WebCore/inspector/front-end/View.js
Source/WebCore/inspector/front-end/externs.js
Source/WebCore/inspector/generate-protocol-externs

index c43028e..104fee7 100644 (file)
@@ -1,3 +1,31 @@
+2011-10-03  Pavel Feldman  <pfeldman@chromium.org>
+
+        Web Inspector: restore partial front-end compilability
+        https://bugs.webkit.org/show_bug.cgi?id=69221
+
+        Removed unused isWhitespace; introduced missing classes in Inspector.json;
+        generated externs for the protocol types along with the commands.
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/Inspector.json:
+        * inspector/compile-front-end.sh:
+        * inspector/front-end/DOMAgent.js:
+        (WebInspector.DOMAgent):
+        (WebInspector.DOMAgent.prototype._dispatchWhenDocumentAvailable.onDocumentAvailable):
+        (WebInspector.DOMAgent.prototype._dispatchWhenDocumentAvailable):
+        * inspector/front-end/ElementsPanel.js:
+        (WebInspector.ElementsPanel.prototype.updateBreadcrumb):
+        * inspector/front-end/ElementsTreeOutline.js:
+        ():
+        * inspector/front-end/Object.js:
+        * inspector/front-end/Popover.js:
+        (WebInspector.PopoverHelper.prototype._mouseMove):
+        * inspector/front-end/View.js:
+        * inspector/front-end/externs.js:
+        (Array.prototype.remove):
+        * inspector/generate-protocol-externs:
+
 2011-10-02  Kent Tamura  <tkent@chromium.org>
 
         method/enctype/formMethod/formEnctype properties should be limited to known values.
index 039a56a..8a83f42 100644 (file)
                 "type": "object",
                 "description": "Search result for resource.",
                 "properties": [
-                       { "name": "url", "type": "string", "description": "Resource URL." },
+                    { "name": "url", "type": "string", "description": "Resource URL." },
                     { "name": "frameId", "type": "string", "description": "Resource frame id." },
                     { "name": "matchesCount", "type": "number", "description": "Number of matches in the resource content." }
                 ],
                 "hidden": true
-            }
+            },
+            {
+                "id": "Cookie",
+                "type": "object",
+                "description": "Cookie object",
+                "properties": [
+                    { "name": "name", "type": "string", "description": "Cookie name." },
+                    { "name": "value", "type": "string", "description": "Cookie value." },
+                    { "name": "domain", "type": "string", "description": "Cookie domain." },
+                    { "name": "path", "type": "string", "description": "Cookie path." },
+                    { "name": "expires", "type": "integer", "description": "Cookie expires." },
+                    { "name": "size", "type": "integer", "description": "Cookie size." },
+                    { "name": "httpOnly", "type": "boolean", "description": "True if cookie is http-only." },
+                    { "name": "secure", "type": "boolean", "description": "True if cookie is secure." },
+                    { "name": "session", "type": "boolean", "description": "True in case of session cookie." }
+                ],
+                "hidden": true
+            },
         ],
         "commands": [
             {
                 "parameters": [
                     { "name": "transactionId", "type": "integer" },
                     { "name": "columnNames", "type": "array", "items": { "type": "string" } },
-                    { "name": "values", "type": "array", "items": { "type": "string or number" }}
+                    { "name": "values", "type": "array", "items": { "type": "any" }}
                 ]
             },
             {
     {
         "domain": "DOMStorage",
         "hidden": true,
-        "types": [],
+        "types": [
+            {
+                "id": "Entry",
+                "type": "object",
+                "description": "DOM Storage entry.",
+                "hidden": true,
+                "properties": [
+                    { "name": "host", "type": "string", "description": "Domain name." },
+                    { "name": "isLocalStorage", "type": "boolean", "description": "True for local storage." },
+                    { "name": "id", "type": "number", "description": "Entry id for further reference." }
+                ]
+            },
+        ],
         "commands": [
             {
                 "name": "enable",
                     { "name": "storageId", "type": "integer" }
                 ],
                 "returns": [
-                    { "name": "entries", "type": "array", "items": { "$ref": "DOMStorageEntry"} }
+                    { "name": "entries", "type": "array", "items": { "$ref": "Entry"} }
                 ]
             },
             {
index 6b6c8b2..ea28d60 100755 (executable)
@@ -34,32 +34,21 @@ python Source/WebCore/inspector/generate-protocol-externs -o Source/WebCore/insp
 java -jar ~/closure/compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --warning_level VERBOSE --language_in ECMASCRIPT5 --accept_const_keyword \
     --externs Source/WebCore/inspector/front-end/externs.js \
     --externs Source/WebCore/inspector/front-end/protocol-externs.js \
-    --module jsmodule_util:2 \
+    --module jsmodule_core:2 \
         --js Source/WebCore/inspector/front-end/utilities.js \
         --js Source/WebCore/inspector/front-end/treeoutline.js \
-    --module jsmodule_host:1 \
-        --js Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js \
-    --module jsmodule_common:4:jsmodule_util,jsmodule_host \
-        --js Source/WebCore/inspector/front-end/BinarySearch.js \
-        --js Source/WebCore/inspector/front-end/Object.js \
+    --module jsmodule_env:3 \
         --js Source/WebCore/inspector/front-end/Settings.js \
         --js Source/WebCore/inspector/front-end/UserMetrics.js \
-    --module jsmodule_sdk:15:jsmodule_common,jsmodule_host \
-        --js Source/WebCore/inspector/front-end/DebuggerModel.js \
-        --js Source/WebCore/inspector/front-end/BreakpointManager.js \
-        --js Source/WebCore/inspector/front-end/ConsoleMessage.js \
-        --js Source/WebCore/inspector/front-end/ConsoleModel.js \
-        --js Source/WebCore/inspector/front-end/DebuggerPresentationModel.js \
-        --js Source/WebCore/inspector/front-end/CookieParser.js \
+        --js Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js \
+    --module jsmodule_sdk:7:jsmodule_core,jsmodule_env \
+        --js Source/WebCore/inspector/front-end/BinarySearch.js \
         --js Source/WebCore/inspector/front-end/DOMAgent.js \
-        --js Source/WebCore/inspector/front-end/NetworkManager.js \
+        --js Source/WebCore/inspector/front-end/DebuggerModel.js \
+        --js Source/WebCore/inspector/front-end/Object.js \
         --js Source/WebCore/inspector/front-end/Script.js \
-        --js Source/WebCore/inspector/front-end/ScriptFormatter.js \
-        --js Source/WebCore/inspector/front-end/SourceFile.js \
         --js Source/WebCore/inspector/front-end/RemoteObject.js \
-        --js Source/WebCore/inspector/front-end/Resource.js \
         --js Source/WebCore/inspector/front-end/ResourceCategory.js \
-        --js Source/WebCore/inspector/front-end/UISourceCode.js \
     --module jsmodule_misc:10:jsmodule_sdk \
         --js Source/WebCore/inspector/front-end/Checkbox.js \
         --js Source/WebCore/inspector/front-end/ContextMenu.js \
index ad85739..6bfb2f8 100644 (file)
@@ -31,6 +31,7 @@
 
 /**
  * @constructor
+ * @param {DOMAgent.Node} payload.
  */
 WebInspector.DOMNode = function(doc, payload) {
     this.ownerDocument = doc;
@@ -258,15 +259,6 @@ WebInspector.DOMNode.prototype = {
         return descendant !== null && descendant.isAncestor(this);
     },
 
-    isWhitespace: function()
-    {
-        if (this.nodeType !== Node.TEXT_NODE)
-            return false;
-        if (!this.nodeValue.length)
-            return true;
-        return this.nodeValue.match(/^[\s\xA0]+$/);
-    },
-
     _setAttributesPayload: function(attrs)
     {
         this._attributes = [];
@@ -275,6 +267,9 @@ WebInspector.DOMNode.prototype = {
             this._addAttribute(attrs[i], attrs[i + 1]);
     },
 
+    /**
+     * @param {DOMAgent.Node} payload.
+     */
     _insertChild: function(prev, payload)
     {
         var node = new WebInspector.DOMNode(this.ownerDocument, payload);
@@ -375,6 +370,7 @@ WebInspector.DOMNode.prototype = {
 /**
  * @extends {WebInspector.DOMNode}
  * @constructor
+ * @param {DOMAgent.Node} payload.
  */
 WebInspector.DOMDocument = function(domAgent, payload)
 {
@@ -390,7 +386,8 @@ WebInspector.DOMDocument.prototype.__proto__ = WebInspector.DOMNode.prototype;
  * @constructor
  */
 WebInspector.DOMAgent = function() {
-    this._idToDOMNode = null;
+    /** @type {Object|undefined} */
+    this._idToDOMNode = {};
     this._document = null;
     this._attributeLoadNodeIds = {};
     InspectorBackend.registerDOMDispatcher(new WebInspector.DOMDispatcher(this));
@@ -409,6 +406,9 @@ WebInspector.DOMAgent.Events = {
 }
 
 WebInspector.DOMAgent.prototype = {
+    /**
+     * @param {function(WebInspector.DOMDocument)=} callback
+     */
     requestDocument: function(callback)
     {
         if (this._document) {
@@ -462,23 +462,18 @@ WebInspector.DOMAgent.prototype = {
         }
     },
 
-    _dispatchWhenDocumentAvailable: function(action)
+    _dispatchWhenDocumentAvailable: function(func, arg, callback)
     {
-        var requestArguments = Array.prototype.slice.call(arguments, 1);
-        var callbackWrapper;
+        if (callback)
+            callback = this._wrapClientCallback(callback);
 
-        if (typeof requestArguments[requestArguments.length - 1] === "function") {
-            var callback = requestArguments.pop();
-            callbackWrapper = this._wrapClientCallback(callback);
-            requestArguments.push(callbackWrapper);
-        }
         function onDocumentAvailable()
         {
             if (this._document)
-                action.apply(null, requestArguments);
+                func.call(null, arg, callback);
             else {
-                if (callbackWrapper)
-                    callbackWrapper("No document");
+                if (callback)
+                    callback("No document");
             }
         }
         this.requestDocument(onDocumentAvailable.bind(this));
@@ -551,7 +546,7 @@ WebInspector.DOMAgent.prototype = {
     },
 
     /**
-     * @param {*} payload
+     * @param {DOMAgent.Node} payload.
      */
     _setDocument: function(payload)
     {
@@ -567,7 +562,7 @@ WebInspector.DOMAgent.prototype = {
     },
 
     /**
-     * @param {*} payload
+     * @param {DOMAgent.Node} payload.
      */
     _setDetachedRoot: function(payload)
     {
index 22103af..be9218d 100644 (file)
@@ -631,10 +631,7 @@ WebInspector.ElementsPanel.prototype = {
                     break;
 
                 case Node.TEXT_NODE:
-                    if (current.isWhitespace())
-                        crumbTitle = WebInspector.UIString("(whitespace)");
-                    else
-                        crumbTitle = WebInspector.UIString("(text)");
+                    crumbTitle = WebInspector.UIString("(text)");
                     break
 
                 case Node.COMMENT_NODE:
index c3c4124..43b8eb9 100644 (file)
@@ -1474,27 +1474,23 @@ WebInspector.ElementsTreeElement.prototype = {
                 break;
 
             case Node.TEXT_NODE:
-                if (node.isWhitespace())
-                    info.titleDOM.appendChild(document.createTextNode("(whitespace)"));
-                else {
-                    if (node.parentNode && node.parentNode.nodeName().toLowerCase() === "script") {
-                        var newNode = info.titleDOM.createChild("span", "webkit-html-text-node webkit-html-js-node");
-                        newNode.textContent = node.nodeValue();
-
-                        var javascriptSyntaxHighlighter = new WebInspector.DOMSyntaxHighlighter("text/javascript", true);
-                        javascriptSyntaxHighlighter.syntaxHighlightNode(newNode);
-                    } else if (node.parentNode && node.parentNode.nodeName().toLowerCase() === "style") {
-                        var newNode = info.titleDOM.createChild("span", "webkit-html-text-node webkit-html-css-node");
-                        newNode.textContent = node.nodeValue();
-
-                        var cssSyntaxHighlighter = new WebInspector.DOMSyntaxHighlighter("text/css", true);
-                        cssSyntaxHighlighter.syntaxHighlightNode(newNode);
-                    } else {
-                        info.titleDOM.appendChild(document.createTextNode("\""));
-                        var textNodeElement = info.titleDOM.createChild("span", "webkit-html-text-node");
-                        textNodeElement.textContent = node.nodeValue();
-                        info.titleDOM.appendChild(document.createTextNode("\""));
-                    }
+                if (node.parentNode && node.parentNode.nodeName().toLowerCase() === "script") {
+                    var newNode = info.titleDOM.createChild("span", "webkit-html-text-node webkit-html-js-node");
+                    newNode.textContent = node.nodeValue();
+
+                    var javascriptSyntaxHighlighter = new WebInspector.DOMSyntaxHighlighter("text/javascript", true);
+                    javascriptSyntaxHighlighter.syntaxHighlightNode(newNode);
+                } else if (node.parentNode && node.parentNode.nodeName().toLowerCase() === "style") {
+                    var newNode = info.titleDOM.createChild("span", "webkit-html-text-node webkit-html-css-node");
+                    newNode.textContent = node.nodeValue();
+
+                    var cssSyntaxHighlighter = new WebInspector.DOMSyntaxHighlighter("text/css", true);
+                    cssSyntaxHighlighter.syntaxHighlightNode(newNode);
+                } else {
+                    info.titleDOM.appendChild(document.createTextNode("\""));
+                    var textNodeElement = info.titleDOM.createChild("span", "webkit-html-text-node");
+                    textNodeElement.textContent = node.nodeValue();
+                    info.titleDOM.appendChild(document.createTextNode("\""));
                 }
                 break;
 
index 56e6c3d..1475d18 100644 (file)
@@ -67,6 +67,9 @@ WebInspector.Object.prototype = {
         return true;
     },
 
+    /**
+     * @param {*=} eventData
+     */
     dispatchEventToListeners: function(eventType, eventData)
     {
         if (!this._listeners || !this._listeners[eventType])
index 121cbe8..327c3f0 100644 (file)
@@ -226,7 +226,7 @@ WebInspector.PopoverHelper.prototype = {
             this._hidePopoverTimer = setTimeout(doHide, this._timeout / 2);
         }
 
-        this._handleMouseAction(event);
+        this._handleMouseAction(event, false);
     },
 
     _handleMouseAction: function(event, isMouseDown)
index 5e07956..88ff7c6 100644 (file)
@@ -26,6 +26,7 @@
 
 /**
  * @constructor
+ * @extends {WebInspector.Object}
  * @param {Element=} element
  */
 WebInspector.View = function(element)
@@ -68,6 +69,9 @@ WebInspector.View.prototype = {
         this.element.addStyleClass("visible");
     },
 
+    /**
+     * @param {Element=} parentElement
+     */
     show: function(parentElement)
     {
         this._visible = true;
index cc35914..347f1e8 100644 (file)
@@ -69,3 +69,5 @@ JSON.parse = function(str) {}
 JSON.stringify = function(str) {}
 
 Element.prototype.scrollIntoViewIfNeeded = function() {}
+
+Array.prototype.remove = function(obj) {}
index d75a3af..8466298 100755 (executable)
@@ -47,6 +47,7 @@ json_api = eval(json_string)["domains"]
 output_file = open(output_path, "w")
 
 type_traits = {
+    "any": "*",
     "string": "string",
     "integer": "number",
     "number": "number",
@@ -65,12 +66,15 @@ def full_qualified_type_id(domain_name, type_id):
 
 def param_type(domain_name, param):
     if "type" in param:
-        return type_traits[param["type"]]
+        if param["type"] == "array":
+            items = param["items"]
+            return "Array.<%s>" % param_type(domain_name, items)
+        else:
+            return type_traits[param["type"]]
     if "$ref" in param:
         type_id = full_qualified_type_id(domain_name, param["$ref"])
         if type_id in ref_types:
-            ref_type = ref_types[type_id]
-            return type_traits[ref_type["type"]]
+            return ref_types[type_id]
         else:
             print "Type not found: " + type_id
             return "!! Type not found: " + type_id
@@ -80,11 +84,27 @@ for domain in json_api:
     if "types" in domain:
         for type in domain["types"]:
             type_id = full_qualified_type_id(domain_name, type["id"])
-            ref_types[type_id] = type;
+            ref_types[type_id] = "%sAgent.%s" % (domain_name, type["id"])
 
 for domain in json_api:
     domain_name = domain["domain"]
     output_file.write("\n\n\nvar %sAgent = {};\n" % domain_name)
+    if "types" in domain:
+        for type in domain["types"]:
+            if type["type"] == "object":
+                output_file.write("\n/** @constructor */\n")
+                output_file.write("%sAgent.%s = function()\n{\n" % (domain_name, type["id"]))
+                if "properties" in type:
+                    for property in type["properties"]:
+                        suffix = ""
+                        if ("optional" in property):
+                            suffix = "|undefined"
+                        output_file.write("/** @type {%s%s} */ this.%s;\n" % (param_type(domain_name, property), suffix, property["name"]))
+                output_file.write("}\n")
+            else:
+                output_file.write("\n/** @typedef {%s} */\n%sAgent.%s;\n" % (type_traits[type["type"]], domain_name, type["id"]))
+                
+
     if "commands" in domain:
         for command in domain["commands"]:
             output_file.write("\n/**\n")