Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / Source / devtools / front_end / bindings / ResourceUtils.js
blob97de0586200754321ab7fe0cf5284e3bcb537bf1
1 /*
2  * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
3  * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com).
4  * Copyright (C) 2009 Joseph Pecoraro
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1.  Redistributions of source code must retain the above copyright
11  *     notice, this list of conditions and the following disclaimer.
12  * 2.  Redistributions in binary form must reproduce the above copyright
13  *     notice, this list of conditions and the following disclaimer in the
14  *     documentation and/or other materials provided with the distribution.
15  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
16  *     its contributors may be used to endorse or promote products derived
17  *     from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
20  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
23  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
31 /**
32  * @param {string} url
33  * @return {?WebInspector.Resource}
34  */
35 WebInspector.resourceForURL = function(url)
37     var targets = WebInspector.targetManager.targets();
38     for (var i = 0; i < targets.length; ++i) {
39         var resource = targets[i].resourceTreeModel.resourceForURL(url);
40         if (resource)
41             return resource;
42     }
43     return null;
46 /**
47  * @param {function(!WebInspector.Resource)} callback
48  */
49 WebInspector.forAllResources = function(callback)
51     var targets = WebInspector.targetManager.targets();
52     for (var i = 0; i < targets.length; ++i)
53         targets[i].resourceTreeModel.forAllResources(callback);
56 /**
57  * @param {string} url
58  * @return {string}
59  */
60 WebInspector.displayNameForURL = function(url)
62     if (!url)
63         return "";
65     var resource = WebInspector.resourceForURL(url);
66     if (resource)
67         return resource.displayName;
69     var uiSourceCode = WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(url);
70     if (uiSourceCode)
71         return uiSourceCode.displayName();
73     if (!WebInspector.targetManager.inspectedPageURL())
74         return url.trimURL("");
76     var parsedURL = WebInspector.targetManager.inspectedPageURL().asParsedURL();
77     var lastPathComponent = parsedURL ? parsedURL.lastPathComponent : parsedURL;
78     var index = WebInspector.targetManager.inspectedPageURL().indexOf(lastPathComponent);
79     if (index !== -1 && index + lastPathComponent.length === WebInspector.targetManager.inspectedPageURL().length) {
80         var baseURL = WebInspector.targetManager.inspectedPageURL().substring(0, index);
81         if (url.startsWith(baseURL))
82             return url.substring(index);
83     }
85     if (!parsedURL)
86         return url;
88     var displayName = url.trimURL(parsedURL.host);
89     return displayName === "/" ? parsedURL.host + "/" : displayName;