9a1f31b4284285d135ddc7ccbf02e11e90983305
braney
  Tue Feb 14 13:41:44 2023 -0800
make hgCustom do the same checks as hgTracks does for suitability for
parallel loading.

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 03b82df..5118f8d 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -7513,43 +7513,32 @@
 lmCleanup(&lm);
 }
 
 
 struct paraFetchData
     {
     struct paraFetchData *next;
     struct track *track;
     boolean done;
     };
 
 static boolean isTrackForParallelLoad(struct track *track)
 /* Is this a track that should be loaded in parallel ? */
 {
 char *bdu = trackDbSetting(track->tdb, "bigDataUrl");
-return (startsWith("big", track->tdb->type)
-     || startsWithWord("mathWig"  , track->tdb->type)
-     || startsWithWord("bam"     , track->tdb->type)
-     || startsWithWord("halSnake", track->tdb->type)
-     || startsWithWord("bigRmsk", track->tdb->type)
-     || startsWithWord("bigLolly", track->tdb->type)
-     || startsWithWord("vcfTabix", track->tdb->type))
-     // XX code-review: shouldn't we error abort if the URL is not valid?
-     && (bdu && isValidBigDataUrl(bdu, FALSE))
-     && !(containsStringNoCase(bdu, "dl.dropboxusercontent.com"))
-     && (track->subtracks == NULL)
-     && (!startsWith("bigInteract", track->tdb->type))
-     && (!startsWith("bigMaf", track->tdb->type));
+
+return customFactoryParallelLoad(bdu, track->tdb->type) && (track->subtracks == NULL);
 }
 
 static void findLeavesForParallelLoad(struct track *trackList, struct paraFetchData **ppfdList)
 /* Find leaves of track tree that are remote network resources for parallel-fetch loading */
 {
 struct track *track;
 if (!trackList)
     return;
 for (track = trackList; track != NULL; track = track->next)
     {
 
     if (track->visibility != tvHide)
 	{
 	if (isTrackForParallelLoad(track))
 	    {