1/* 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 3 * Copyright (C) IBM Corp. 2009 All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 15 * its contributors may be used to endorse or promote products derived 16 * from this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30/** 31 * @extends {WebInspector.View} 32 * @constructor 33 */ 34WebInspector.ResourceView = function(resource) 35{ 36 WebInspector.View.call(this); 37 this.registerRequiredCSS("resourceView.css"); 38 39 this.element.classList.add("resource-view"); 40 this.resource = resource; 41} 42 43WebInspector.ResourceView.prototype = { 44 hasContent: function() 45 { 46 return false; 47 }, 48 49 __proto__: WebInspector.View.prototype 50} 51 52/** 53 * @param {!WebInspector.Resource} resource 54 */ 55WebInspector.ResourceView.hasTextContent = function(resource) 56{ 57 if (resource.type.isTextType()) 58 return true; 59 if (resource.type === WebInspector.resourceTypes.Other) 60 return resource.content && !resource.contentEncoded; 61 return false; 62} 63 64/** 65 * @param {!WebInspector.Resource} resource 66 */ 67WebInspector.ResourceView.nonSourceViewForResource = function(resource) 68{ 69 switch (resource.type) { 70 case WebInspector.resourceTypes.Image: 71 return new WebInspector.ImageView(resource); 72 case WebInspector.resourceTypes.Font: 73 return new WebInspector.FontView(resource); 74 default: 75 return new WebInspector.ResourceView(resource); 76 } 77} 78 79/** 80 * @extends {WebInspector.SourceFrame} 81 * @constructor 82 * @param {!WebInspector.Resource} resource 83 */ 84WebInspector.ResourceSourceFrame = function(resource) 85{ 86 this._resource = resource; 87 WebInspector.SourceFrame.call(this, resource); 88} 89 90WebInspector.ResourceSourceFrame.prototype = { 91 get resource() 92 { 93 return this._resource; 94 }, 95 96 populateTextAreaContextMenu: function(contextMenu, lineNumber) 97 { 98 contextMenu.appendApplicableItems(this._resource); 99 }, 100 101 __proto__: WebInspector.SourceFrame.prototype 102} 103 104/** 105 * @constructor 106 * @extends {WebInspector.View} 107 * @param {!WebInspector.Resource} resource 108 */ 109WebInspector.ResourceSourceFrameFallback = function(resource) 110{ 111 WebInspector.View.call(this); 112 this._resource = resource; 113 this.element.classList.add("fill"); 114 this.element.classList.add("script-view"); 115 this._content = this.element.createChild("div", "script-view-fallback monospace"); 116} 117 118WebInspector.ResourceSourceFrameFallback.prototype = { 119 wasShown: function() 120 { 121 if (!this._contentRequested) { 122 this._contentRequested = true; 123 this._resource.requestContent(this._contentLoaded.bind(this)); 124 } 125 }, 126 127 /** 128 * @param {?string} content 129 */ 130 _contentLoaded: function(content) 131 { 132 this._content.textContent = content; 133 }, 134 135 __proto__: WebInspector.View.prototype 136}