@@ -524,20 +524,36 @@ const Liberator = Module("liberator", {
524
524
let fileMap = services . get ( "liberator:" ) . FILE_MAP ;
525
525
let overlayMap = services . get ( "liberator:" ) . OVERLAY_MAP ;
526
526
527
+ // XXX: util.httpGet is very heavy on startup. (Fx32)
528
+ function httpGet ( url ) {
529
+ var channel = services . get ( "io" ) . newChannelFromURI ( makeURI ( url ) ) ;
530
+ try {
531
+ var stream = channel . open ( ) ;
532
+ } catch ( ex ) {
533
+ return null ;
534
+ }
535
+
536
+ var ps = new DOMParser ;
537
+ var res = ps . parseFromStream ( stream , "utf-8" , stream . available ( ) , "text/xml" ) ;
538
+ stream . close ( ) ;
539
+ return { responseXML : res } ;
540
+ }
541
+
527
542
// Left as an XPCOM instantiation so it can easilly be moved
528
543
// into XPCOM code.
529
544
function XSLTProcessor ( sheet ) {
530
545
let xslt = Cc [ "@mozilla.org/document-transformer;1?type=xslt" ] . createInstance ( Ci . nsIXSLTProcessor ) ;
531
- xslt . importStylesheet ( util . httpGet ( sheet ) . responseXML ) ;
546
+ xslt . importStylesheet ( httpGet ( sheet ) . responseXML ) ;
532
547
return xslt ;
533
548
}
534
549
535
550
// Find help and overlay files with the given name.
536
551
function findHelpFile ( file ) {
537
552
let result = [ ] ;
553
+
538
554
for ( let namespace of namespaces ) {
539
555
let url = [ "chrome://" , namespace , "/locale/" , file , ".xml" ] . join ( "" ) ;
540
- let res = util . httpGet ( url ) ;
556
+ let res = httpGet ( url ) ;
541
557
if ( res ) {
542
558
if ( res . responseXML . documentElement . localName == "document" )
543
559
fileMap [ file ] = url ;
@@ -611,7 +627,7 @@ const Liberator = Module("liberator", {
611
627
</document>` . toString ( ) ;
612
628
fileMap [ "plugins" ] = function ( ) [ 'text/xml;charset=UTF-8' , help ] ;
613
629
614
- addTags ( "plugins" , util . httpGet ( "liberator://help/plugins" ) . responseXML ) ;
630
+ addTags ( "plugins" , httpGet ( "liberator://help/plugins" ) . responseXML ) ;
615
631
} ,
616
632
617
633
/**
0 commit comments