1/*
2 * Copyright (C) 2012 Google Inc.  All rights reserved.
3 * Copyright (C) 2007, 2008 Apple Inc.  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 * @constructor
32 * @param {string} name
33 * @param {string} title
34 * @param {string} categoryTitle
35 * @param {string} color
36 * @param {boolean} isTextType
37 */
38WebInspector.ResourceType = function(name, title, categoryTitle, color, isTextType)
39{
40    this._name = name;
41    this._title = title;
42    this._categoryTitle = categoryTitle;
43    this._color = color;
44    this._isTextType = isTextType;
45}
46
47WebInspector.ResourceType.prototype = {
48    /**
49     * @return {string}
50     */
51    name: function()
52    {
53        return this._name;
54    },
55
56    /**
57     * @return {string}
58     */
59    title: function()
60    {
61        return this._title;
62    },
63
64    /**
65     * @return {string}
66     */
67    categoryTitle: function()
68    {
69        return this._categoryTitle;
70    },
71
72    /**
73     * @return {string}
74     */
75    color: function()
76    {
77        return this._color;
78    },
79
80    /**
81     * @return {boolean}
82     */
83    isTextType: function()
84    {
85        return this._isTextType;
86    },
87
88    /**
89     * @return {string}
90     */
91    toString: function()
92    {
93        return this._name;
94    },
95
96    /**
97     * @return {string}
98     */
99    canonicalMimeType: function()
100    {
101        if (this === WebInspector.resourceTypes.Document)
102            return "text/html";
103        if (this === WebInspector.resourceTypes.Script)
104            return "text/javascript";
105        if (this === WebInspector.resourceTypes.Stylesheet)
106            return "text/css";
107        return "";
108    }
109}
110
111/**
112 * Keep these in sync with WebCore::InspectorPageAgent::resourceTypeJson
113 * @enum {!WebInspector.ResourceType}
114 */
115WebInspector.resourceTypes = {
116    Document: new WebInspector.ResourceType("document", "Document", "Documents", "rgb(47,102,236)", true),
117    Stylesheet: new WebInspector.ResourceType("stylesheet", "Stylesheet", "Stylesheets", "rgb(157,231,119)", true),
118    Image: new WebInspector.ResourceType("image", "Image", "Images", "rgb(164,60,255)", false),
119    Media: new WebInspector.ResourceType("media", "Media", "Media", "rgb(164,60,255)", false), // FIXME: Decide the color.
120    Script: new WebInspector.ResourceType("script", "Script", "Scripts", "rgb(255,121,0)", true),
121    XHR: new WebInspector.ResourceType("xhr", "XHR", "XHR", "rgb(231,231,10)", true),
122    Font: new WebInspector.ResourceType("font", "Font", "Fonts", "rgb(255,82,62)", false),
123    TextTrack: new WebInspector.ResourceType("texttrack", "TextTrack", "TextTracks", "rgb(164,60,255)", true), // FIXME: Decide the color.
124    WebSocket: new WebInspector.ResourceType("websocket", "WebSocket", "WebSockets", "rgb(186,186,186)", false), // FIXME: Decide the color.
125    Other: new WebInspector.ResourceType("other", "Other", "Other", "rgb(186,186,186)", false)
126}
127
128WebInspector.ResourceType.mimeTypesForExtensions = {
129    // Web extensions
130    "js": "text/javascript",
131    "css": "text/css",
132    "html": "text/html",
133    "htm": "text/html",
134    "xml": "application/xml",
135    "xsl": "application/xml",
136
137    // HTML Embedded Scripts: ASP, JSP
138    "asp": "application/x-aspx",
139    "aspx": "application/x-aspx",
140    "jsp": "application/x-jsp",
141
142    // C/C++
143    "c": "text/x-c++src",
144    "cc": "text/x-c++src",
145    "cpp": "text/x-c++src",
146    "h": "text/x-c++src",
147    "m": "text/x-c++src",
148    "mm": "text/x-c++src",
149
150    // CoffeeScript
151    "coffee": "text/x-coffeescript",
152
153    // Dart
154    "dart": "text/javascript",
155
156    // TypeScript
157    "ts": "text/typescript",
158
159    // JSON
160    "json": "application/json",
161    "gyp": "application/json",
162    "gypi": "application/json",
163
164    // C#
165    "cs": "text/x-csharp",
166
167    // Java
168    "java": "text/x-java",
169
170    // PHP
171    "php": "text/x-php",
172    "phtml": "application/x-httpd-php",
173
174    // Python
175    "py": "text/x-python",
176
177    // Shell
178    "sh": "text/x-sh",
179
180    // SCSS
181    "scss": "text/x-scss",
182
183    // Video Text Tracks.
184    "vtt": "text/vtt"
185}
186