15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007, 2008 Apple Inc.  All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) IBM Corp. 2009  All rights reserved.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1.  Redistributions of source code must retain the above copyright
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer.
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2.  Redistributions in binary form must reproduce the above copyright
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer in the
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     documentation and/or other materials provided with the distribution.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     its contributors may be used to endorse or promote products derived
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     from this software without specific prior written permission.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox}
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ResourceView = function(resource)
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebInspector.VBox.call(this);
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this.registerRequiredCSS("resourceView.css");
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    this.element.classList.add("resource-view");
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this.resource = resource;
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ResourceView.prototype = {
4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    /**
4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)     * @return {boolean}
4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)     */
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    hasContent: function()
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return false;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    __proto__: WebInspector.VBox.prototype
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
56a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Resource} resource
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean}
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ResourceView.hasTextContent = function(resource)
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    if (resource.type.isTextType())
62f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu        return true;
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    if (resource.type === WebInspector.resourceTypes.Other)
6409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return !!resource.content && !resource.contentEncoded;
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return false;
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
69a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Resource} resource
705d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @return {!WebInspector.ResourceView}
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ResourceView.nonSourceViewForResource = function(resource)
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    switch (resource.type) {
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    case WebInspector.resourceTypes.Image:
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return new WebInspector.ImageView(resource);
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    case WebInspector.resourceTypes.Font:
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return new WebInspector.FontView(resource);
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    default:
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return new WebInspector.ResourceView(resource);
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    }
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.SourceFrame}
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor
877242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.ContentProvider} resource
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ResourceSourceFrame = function(resource)
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._resource = resource;
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WebInspector.SourceFrame.call(this, resource);
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.ResourceSourceFrame.prototype = {
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    get resource()
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this._resource;
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    populateTextAreaContextMenu: function(contextMenu, lineNumber)
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        contextMenu.appendApplicableItems(this._resource);
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    __proto__: WebInspector.SourceFrame.prototype
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
10853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
10953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)/**
11053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @constructor
111d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox}
1127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.ContentProvider} resource
11353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */
11453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.ResourceSourceFrameFallback = function(resource)
11553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){
116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebInspector.VBox.call(this);
11753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    this._resource = resource;
118a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    this.element.classList.add("script-view");
11953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    this._content = this.element.createChild("div", "script-view-fallback monospace");
12053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)}
12153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
12253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.ResourceSourceFrameFallback.prototype = {
12353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    wasShown: function()
12453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    {
12553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)        if (!this._contentRequested) {
12653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)            this._contentRequested = true;
12753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)            this._resource.requestContent(this._contentLoaded.bind(this));
12853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)        }
12953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    },
13053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
1311e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    /**
13253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)     * @param {?string} content
13353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)     */
1341e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    _contentLoaded: function(content)
13553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    {
13653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)        this._content.textContent = content;
13753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    },
13853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    __proto__: WebInspector.VBox.prototype
140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
141