Home | History | Annotate | Download | only in front_end
      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 }