diff options
Diffstat (limited to 'webkit/port/page/inspector/SourceView.js')
-rw-r--r-- | webkit/port/page/inspector/SourceView.js | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/webkit/port/page/inspector/SourceView.js b/webkit/port/page/inspector/SourceView.js index 8d888e4..e69de29 100644 --- a/webkit/port/page/inspector/SourceView.js +++ b/webkit/port/page/inspector/SourceView.js @@ -1,162 +0,0 @@ -/* - * 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.SourceView = function(resource) -{ - WebInspector.ResourceView.call(this, resource); - - this.element.addStyleClass("source"); - - this.messages = []; - this._frameNeedsSetup = true; - - this.frameElement = document.createElement("iframe"); - this.frameElement.className = "source-view-frame"; - this.frameElement.setAttribute("viewsource", "true"); - this.contentElement.appendChild(this.frameElement); -} - -WebInspector.SourceView.prototype = { - show: function() - { - WebInspector.ResourceView.prototype.show.call(this); - this.setupSourceFrameIfNeeded(); - }, - - setupSourceFrameIfNeeded: function() - { - if (this.resource.finished && !this.resource.failed && this._frameNeedsSetup) { - delete this._frameNeedsSetup; - - this.attach(); - - InspectorController.addSourceToFrame(this.resource.identifier, this.frameElement); - WebInspector.addMainEventListeners(this.frameElement.contentDocument); - - var length = this.messages.length; - for (var i = 0; i < length; ++i) - this._addMessageToSource(this.messages[i]); - } - }, - - sourceRow: function(lineNumber) - { - if (!lineNumber) - return; - - this.setupSourceFrameIfNeeded(); - - var doc = this.frameElement.contentDocument; - var rows = doc.getElementsByTagName("table")[0].rows; - - // Line numbers are a 1-based index, but the rows collection is 0-based. - --lineNumber; - if (lineNumber >= rows.length) - lineNumber = rows.length - 1; - - return rows[lineNumber]; - }, - - showLine: function(lineNumber) - { - var row = this.sourceRow(lineNumber); - if (!row) - return; - row.scrollIntoViewIfNeeded(true); - }, - - addMessage: function(msg) - { - this.messages.push(msg); - if (!this._frameNeedsSetup) - this._addMessageToSource(msg); - }, - - clearMessages: function() - { - this.messages = []; - - if (this._frameNeedsSetup) - return; - - var bubbles = this.frameElement.contentDocument.querySelectorAll(".webkit-html-message-bubble"); - if (!bubbles) - return; - - for (var i = 0; i < bubbles.length; ++i) { - var bubble = bubbles[i]; - bubble.parentNode.removeChild(bubble); - } - }, - - _addMessageToSource: function(msg) - { - var row = this.sourceRow(msg.line); - if (!row) - return; - - var doc = this.frameElement.contentDocument; - var cell = row.getElementsByTagName("td")[1]; - - var errorDiv = cell.lastChild; - if (!errorDiv || errorDiv.nodeName.toLowerCase() !== "div" || !errorDiv.hasStyleClass("webkit-html-message-bubble")) { - errorDiv = doc.createElement("div"); - errorDiv.className = "webkit-html-message-bubble"; - cell.appendChild(errorDiv); - } - - var imageURL; - switch (msg.level) { - case WebInspector.ConsoleMessage.MessageLevel.Error: - errorDiv.addStyleClass("webkit-html-error-message"); - imageURL = "Images/errorIcon.png"; - break; - case WebInspector.ConsoleMessage.MessageLevel.Warning: - errorDiv.addStyleClass("webkit-html-warning-message"); - imageURL = "Images/warningIcon.png"; - break; - } - - var lineDiv = doc.createElement("div"); - lineDiv.className = "webkit-html-message-line"; - errorDiv.appendChild(lineDiv); - - // Create the image element in the Inspector's document so we can use relative image URLs. - var image = document.createElement("img"); - image.src = imageURL; - image.className = "webkit-html-message-icon"; - - // Adopt the image element since it wasn't created in doc. - image = doc.adoptNode(image); - lineDiv.appendChild(image); - - lineDiv.appendChild(doc.createTextNode(msg.message)); - } -} - -WebInspector.SourceView.prototype.__proto__ = WebInspector.ResourceView.prototype; |