home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- WebInspector.ResourceView = function(resource)
- {
- WebInspector.View.call(this);
-
- this.element.addStyleClass("resource-view");
-
- this.resource = resource;
-
- this.headersElement = document.createElement("div");
- this.headersElement.className = "resource-view-headers";
- this.element.appendChild(this.headersElement);
-
- this.contentElement = document.createElement("div");
- this.contentElement.className = "resource-view-content";
- this.element.appendChild(this.contentElement);
-
- this.headersListElement = document.createElement("ol");
- this.headersListElement.className = "outline-disclosure";
- this.headersElement.appendChild(this.headersListElement);
-
- this.headersTreeOutline = new TreeOutline(this.headersListElement);
- this.headersTreeOutline.expandTreeElementsWhenArrowing = true;
-
- this.urlTreeElement = new TreeElement("", null, false);
- this.urlTreeElement.selectable = false;
- this.headersTreeOutline.appendChild(this.urlTreeElement);
-
- this.requestHeadersTreeElement = new TreeElement("", null, true);
- this.requestHeadersTreeElement.expanded = false;
- this.requestHeadersTreeElement.selectable = false;
- this.headersTreeOutline.appendChild(this.requestHeadersTreeElement);
-
- this.responseHeadersTreeElement = new TreeElement("", null, true);
- this.responseHeadersTreeElement.expanded = false;
- this.responseHeadersTreeElement.selectable = false;
- this.headersTreeOutline.appendChild(this.responseHeadersTreeElement);
-
- this.headersVisible = true;
-
- resource.addEventListener("url changed", this._refreshURL, this);
- resource.addEventListener("requestHeaders changed", this._refreshRequestHeaders, this);
- resource.addEventListener("responseHeaders changed", this._refreshResponseHeaders, this);
-
- this._refreshURL();
- this._refreshRequestHeaders();
- this._refreshResponseHeaders();
- }
-
- WebInspector.ResourceView.prototype = {
- get headersVisible()
- {
- return this._headersVisible;
- },
-
- set headersVisible(x)
- {
- if (x === this._headersVisible)
- return;
-
- this._headersVisible = x;
-
- if (x)
- this.element.addStyleClass("headers-visible");
- else
- this.element.removeStyleClass("headers-visible");
- },
-
- attach: function()
- {
- if (!this.element.parentNode) {
- var parentElement = (document.getElementById("resource-views") || document.getElementById("script-resource-views"));
- if (parentElement)
- parentElement.appendChild(this.element);
- }
- },
-
- _refreshURL: function()
- {
- this.urlTreeElement.title = this.resource.url.escapeHTML();
- },
-
- _refreshRequestHeaders: function()
- {
- this._refreshHeaders(WebInspector.UIString("Request Headers"), this.resource.sortedRequestHeaders, this.requestHeadersTreeElement);
- },
-
- _refreshResponseHeaders: function()
- {
- this._refreshHeaders(WebInspector.UIString("Response Headers"), this.resource.sortedResponseHeaders, this.responseHeadersTreeElement);
- },
-
- _refreshHeaders: function(title, headers, headersTreeElement)
- {
- headersTreeElement.removeChildren();
-
- var length = headers.length;
- headersTreeElement.title = title.escapeHTML() + "<span class=\"header-count\">" + WebInspector.UIString(" (%d)", length) + "</span>";
- headersTreeElement.hidden = !length;
-
- var length = headers.length;
- for (var i = 0; i < length; ++i) {
- var title = "<div class=\"header-name\">" + headers[i].header.escapeHTML() + ":</div>";
- title += "<div class=\"header-value\">" + headers[i].value.escapeHTML() + "</div>"
-
- var headerTreeElement = new TreeElement(title, null, false);
- headerTreeElement.selectable = false;
- headersTreeElement.appendChild(headerTreeElement);
- }
- }
- }
-
- WebInspector.ResourceView.prototype.__proto__ = WebInspector.View.prototype;
-