search-provider.js (2108B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { ObjectProvider } = ChromeUtils.importESModule( 8 "resource://devtools/client/shared/components/tree/ObjectProvider.mjs", 9 { global: "current" } 10 ); 11 const { 12 getFileName, 13 } = require("resource://devtools/client/netmonitor/src/utils/request-utils.js"); 14 15 /** 16 * This provider is responsible for providing data from the 17 * search reducer to the SearchPanel. 18 */ 19 const SearchProvider = { 20 ...ObjectProvider, 21 22 getChildren(object) { 23 if (Array.isArray(object)) { 24 return object; 25 } else if (object.resource) { 26 return object.results; 27 } else if (object.type) { 28 return []; 29 } 30 return ObjectProvider.getLabel(object); 31 }, 32 33 hasChildren(object) { 34 return !!this.getChildren(object).length; 35 }, 36 37 getLabel(object) { 38 if (object.resource) { 39 return this.getResourceLabel(object); 40 } else if (object.label) { 41 return object.label; 42 } 43 return ObjectProvider.getLabel(object); 44 }, 45 46 getValue(object) { 47 if (object.resource) { 48 return ""; 49 } else if (object.type) { 50 return object.value; 51 } 52 return ObjectProvider.getValue(object); 53 }, 54 55 getKey(object) { 56 if (object.resource) { 57 return object.resource.id; 58 } else if (object.type) { 59 return object.key; 60 } 61 return ObjectProvider.getKey(object); 62 }, 63 64 getType(object) { 65 if (object.resource) { 66 return "resource"; 67 } else if (object.type) { 68 return "result"; 69 } 70 return ObjectProvider.getType(object); 71 }, 72 73 getResourceTooltipLabel(object) { 74 const { resource } = object; 75 if (resource.urlDetails?.url) { 76 return resource.urlDetails.url; 77 } 78 79 return this.getResourceLabel(object); 80 }, 81 82 getResourceLabel(object) { 83 return ( 84 getFileName(object.resource.urlDetails.baseNameWithQuery) || 85 object.resource.urlDetails.host 86 ); 87 }, 88 }; 89 90 module.exports = { 91 SearchProvider, 92 };