One more point : do org-mode experts have an idea about whether there are any better way to match a URL that can be browsed with the browse-url function.
My point is that for a modular design, the same package that provides the browse-url function, should also provide some match-url-at-point-p predicate, e.g. - 1st optional argument would give a point in the current buffer, (point) if omitted - 2nd optional argument would be an include/exclude list of protocols which you want/don't want to browse with browse-url. All browsable protocols would be assumed if omitted. For instance the info browser would exclude info protocol, so that it can directly browse it. This way the package calling browse-url would be independant/futureproof w.r.t. to URL format/evolultion. V.