diff options
author | Steve Block <steveblock@google.com> | 2011-05-06 11:45:16 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-05-12 13:44:10 +0100 |
commit | cad810f21b803229eb11403f9209855525a25d57 (patch) | |
tree | 29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /Source/WebCore/inspector/front-end/ScriptView.js | |
parent | 121b0cf4517156d0ac5111caf9830c51b69bae8f (diff) | |
download | external_webkit-cad810f21b803229eb11403f9209855525a25d57.zip external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2 |
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'Source/WebCore/inspector/front-end/ScriptView.js')
-rw-r--r-- | Source/WebCore/inspector/front-end/ScriptView.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/Source/WebCore/inspector/front-end/ScriptView.js b/Source/WebCore/inspector/front-end/ScriptView.js new file mode 100644 index 0000000..39dae55 --- /dev/null +++ b/Source/WebCore/inspector/front-end/ScriptView.js @@ -0,0 +1,113 @@ +/* + * Copyright (C) 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. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``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 INC. OR + * 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.ScriptView = function(script) +{ + WebInspector.View.call(this); + + this.element.addStyleClass("script-view"); + + this.script = script; + this.script.addEventListener(WebInspector.Script.Events.SourceChanged, this._scriptSourceChanged, this); + + this._frameNeedsSetup = true; + this._sourceFrameSetup = false; + this.sourceFrame = new WebInspector.SourceFrame(this.element, [script], WebInspector.panels.scripts.canEditScripts()); +} + +WebInspector.ScriptView.prototype = { + show: function(parentElement) + { + WebInspector.View.prototype.show.call(this, parentElement); + this.setupSourceFrameIfNeeded(); + this.sourceFrame.visible = true; + this.resize(); + }, + + setupSourceFrameIfNeeded: function() + { + if (!this._frameNeedsSetup) + return; + delete this._frameNeedsSetup; + + this.attach(); + + if (this.script.source) + this._sourceFrameSetupFinished(); + else + InspectorBackend.getScriptSource(this.script.sourceID, this._didGetScriptSource.bind(this)); + }, + + _didGetScriptSource: function(source) + { + this.script.source = source || WebInspector.UIString("<source is not available>"); + this._sourceFrameSetupFinished(); + }, + + _sourceFrameSetupFinished: function() + { + this.sourceFrame.setContent("text/javascript", this._prependWhitespace(this.script.source)); + this._sourceFrameSetup = true; + }, + + _prependWhitespace: function(content) { + var prefix = ""; + for (var i = 0; i < this.script.startingLine - 1; ++i) + prefix += "\n"; + return prefix + content; + }, + + attach: function() + { + if (!this.element.parentNode) + document.getElementById("script-resource-views").appendChild(this.element); + }, + + _scriptSourceChanged: function(event) + { + this.sourceFrame.updateContent(this._prependWhitespace(this.script.source)); + }, + + // The following methods are pulled from SourceView, since they are + // generic and work with ScriptView just fine. + + hide: WebInspector.SourceView.prototype.hide, + revealLine: WebInspector.SourceView.prototype.revealLine, + highlightLine: WebInspector.SourceView.prototype.highlightLine, + addMessage: WebInspector.SourceView.prototype.addMessage, + clearMessages: WebInspector.SourceView.prototype.clearMessages, + searchCanceled: WebInspector.SourceView.prototype.searchCanceled, + performSearch: WebInspector.SourceView.prototype.performSearch, + jumpToFirstSearchResult: WebInspector.SourceView.prototype.jumpToFirstSearchResult, + jumpToLastSearchResult: WebInspector.SourceView.prototype.jumpToLastSearchResult, + jumpToNextSearchResult: WebInspector.SourceView.prototype.jumpToNextSearchResult, + jumpToPreviousSearchResult: WebInspector.SourceView.prototype.jumpToPreviousSearchResult, + showingFirstSearchResult: WebInspector.SourceView.prototype.showingFirstSearchResult, + showingLastSearchResult: WebInspector.SourceView.prototype.showingLastSearchResult, + _jumpToSearchResult: WebInspector.SourceView.prototype._jumpToSearchResult, + resize: WebInspector.SourceView.prototype.resize +} + +WebInspector.ScriptView.prototype.__proto__ = WebInspector.View.prototype; |