Chromium Code Reviews| Index: Source/devtools/front_end/NetworkUISourceCodeProvider.js |
| diff --git a/Source/devtools/front_end/NetworkUISourceCodeProvider.js b/Source/devtools/front_end/NetworkUISourceCodeProvider.js |
| index 8aa1a9798153fb8fd57556bf9279eae19f7038a0..e278f7b6a9b8cf1671758c35638b031fe9ef6558 100644 |
| --- a/Source/devtools/front_end/NetworkUISourceCodeProvider.js |
| +++ b/Source/devtools/front_end/NetworkUISourceCodeProvider.js |
| @@ -100,7 +100,7 @@ WebInspector.NetworkUISourceCodeProvider.prototype = { |
| _resourceAdded: function(event) |
| { |
| var resource = /** @type {!WebInspector.Resource} */ (event.data); |
| - this._addFile(resource.url, resource); |
| + this._addFile(resource.url, new WebInspector.NetworkUISourceCodeProvider.FallbackResource(resource)); |
| }, |
| /** |
| @@ -140,6 +140,108 @@ WebInspector.NetworkUISourceCodeProvider.prototype = { |
| } |
| /** |
| + * @constructor |
| + * @implements {WebInspector.ContentProvider} |
| + * @param {!WebInspector.Resource} resource |
| + */ |
| +WebInspector.NetworkUISourceCodeProvider.FallbackResource = function(resource) |
| +{ |
| + this._resource = resource; |
| +} |
| + |
| +WebInspector.NetworkUISourceCodeProvider.FallbackResource.prototype = { |
| + |
| + /** |
| + * @return {string} |
| + */ |
| + contentURL: function() |
| + { |
| + return this._resource.contentURL(); |
| + }, |
| + |
| + /** |
| + * @return {!WebInspector.ResourceType} |
| + */ |
| + contentType: function() |
| + { |
| + return this._resource.contentType(); |
| + }, |
| + |
| + /** |
| + * @param {function(?string)} callback |
| + */ |
| + requestContent: function(callback) |
| + { |
| + /** |
| + * @this {WebInspector.NetworkUISourceCodeProvider.FallbackResource} |
| + */ |
| + function loadFallbackContent() |
| + { |
| + var scripts = WebInspector.debuggerModel.scriptsForSourceURL(this._resource.url); |
| + if (!scripts.length) { |
| + callback(null); |
| + return; |
| + } |
| + |
| + var contentProvider; |
| + if (this._resource.type === WebInspector.resourceTypes.Document) |
| + contentProvider = new WebInspector.ConcatenatedScriptsContentProvider(scripts); |
| + else if (this._resource.type === WebInspector.resourceTypes.Script) |
| + contentProvider = scripts[0]; |
| + |
| + if (!contentProvider) |
| + console.assert(false, "Resource content request failed. " + this._resource.url); |
|
vsevik
2014/02/13 14:02:48
console.assert(contentProvider, "Resource content
sergeyv
2014/02/13 14:14:14
Done.
|
| + |
| + contentProvider.requestContent(callback); |
| + } |
| + |
| + /** |
| + * @param {?string} content |
| + * @this {WebInspector.NetworkUISourceCodeProvider.FallbackResource} |
| + */ |
| + function requestContentLoaded(content) |
| + { |
| + if (content) |
| + callback(content) |
| + else |
| + loadFallbackContent.call(this); |
| + } |
| + |
| + this._resource.requestContent(requestContentLoaded.bind(this)); |
| + }, |
| + |
| + /** |
| + * @param {string} query |
| + * @param {boolean} caseSensitive |
| + * @param {boolean} isRegex |
| + * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback |
| + */ |
| + searchInContent: function(query, caseSensitive, isRegex, callback) |
| + { |
| + /** |
| + * @param {?string} content |
| + */ |
| + function documentContentLoaded(content) |
| + { |
| + if (content === null) { |
| + callback([]); |
| + return; |
| + } |
| + |
| + var result = WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex); |
| + callback(result); |
| + } |
| + |
| + if (this.contentType() === WebInspector.resourceTypes.Document) { |
| + this.requestContent(documentContentLoaded); |
| + return; |
| + } |
| + |
| + this._resource.searchInContent(query, caseSensitive, isRegex, callback); |
| + } |
| +} |
| + |
| +/** |
| * @type {!WebInspector.SimpleWorkspaceProvider} |
| */ |
| WebInspector.networkWorkspaceProvider; |