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 */ 34 WebInspector.ResourceView = function(resource) 35 { 36 WebInspector.View.call(this); 37 this.registerRequiredCSS("resourceView.css"); 38 39 this.element.addStyleClass("resource-view"); 40 this.resource = resource; 41 } 42 43 WebInspector.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 */ 55 WebInspector.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 */ 67 WebInspector.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 */ 84 WebInspector.ResourceSourceFrame = function(resource) 85 { 86 this._resource = resource; 87 WebInspector.SourceFrame.call(this, resource); 88 } 89 90 WebInspector.ResourceSourceFrame.prototype = { 91 get resource() 92 { 93 return this._resource; 94 }, 95 96 populateTextAreaContextMenu: function(contextMenu, lineNumber) 97 { 98 contextMenu.appendApplicableItems(this._resource); 99 if (this._resource.request) 100 contextMenu.appendApplicableItems(this._resource.request); 101 }, 102 103 __proto__: WebInspector.SourceFrame.prototype 104 } 105 106 /** 107 * @constructor 108 * @extends {WebInspector.View} 109 * @param {WebInspector.Resource} resource 110 */ 111 WebInspector.ResourceSourceFrameFallback = function(resource) 112 { 113 WebInspector.View.call(this); 114 this._resource = resource; 115 this.element.addStyleClass("fill"); 116 this.element.addStyleClass("script-view"); 117 this._content = this.element.createChild("div", "script-view-fallback monospace"); 118 } 119 120 WebInspector.ResourceSourceFrameFallback.prototype = { 121 wasShown: function() 122 { 123 if (!this._contentRequested) { 124 this._contentRequested = true; 125 this._resource.requestContent(this._contentLoaded.bind(this)); 126 } 127 }, 128 129 /** 130 * @param {?string} content 131 * @param {boolean} contentEncoded 132 * @param {string} mimeType 133 */ 134 _contentLoaded: function(content, contentEncoded, mimeType) 135 { 136 this._content.textContent = content; 137 }, 138 139 __proto__: WebInspector.View.prototype 140 }