Bug 1363421 - Part 1, lazy load HTTP protocol handler to improve start-up performance. r=mcmanus draft
authorShih-Chiang Chien <schien@mozilla.com>
Wed, 10 May 2017 11:06:05 +0800
changeset 576082 8061ed3ce6c42955e52f494166958f5b63ab940b
parent 574519 b21b974d60d3075ae24f6fb1bae75d0f122f28fc
child 576083 20dd6ebfa0389c22fa6bd8db409a74e02f7f41cb
child 576832 2898e0bbbbb4241a287063f0f312d2bc1deeb716
child 578235 7c3649b50ad8594dc0968961fbbd2766d0d98b0a
push id58266
push userbmo:schien@mozilla.com
push dateThu, 11 May 2017 10:53:29 +0000
reviewersmcmanus
bugs1363421
milestone55.0a1
Bug 1363421 - Part 1, lazy load HTTP protocol handler to improve start-up performance. r=mcmanus system-info might need to be construct while creating nsHttpHandler and it might take up to 30ms. Lazy loading the DEFAULT_UA can delay the creation of nsHttpHandler after start-up. MozReview-Commit-ID: FtIpKjcY38r
netwerk/protocol/http/UserAgentOverrides.jsm
--- a/netwerk/protocol/http/UserAgentOverrides.jsm
+++ b/netwerk/protocol/http/UserAgentOverrides.jsm
@@ -9,21 +9,25 @@ this.EXPORTED_SYMBOLS = [ "UserAgentOver
 const Ci = Components.interfaces;
 const Cc = Components.classes;
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource://gre/modules/UserAgentUpdates.jsm");
 
 const PREF_OVERRIDES_ENABLED = "general.useragent.site_specific_overrides";
-const DEFAULT_UA = Cc["@mozilla.org/network/protocol;1?name=http"]
-                     .getService(Ci.nsIHttpProtocolHandler)
-                     .userAgent;
 const MAX_OVERRIDE_FOR_HOST_CACHE_SIZE = 250;
 
+// lazy load nsHttpHandler to improve startup performance.
+XPCOMUtils.defineLazyGetter(this, "DEFAULT_UA", function() {
+  return Cc["@mozilla.org/network/protocol;1?name=http"]
+           .getService(Ci.nsIHttpProtocolHandler)
+           .userAgent;
+});
+
 var gPrefBranch;
 var gOverrides = new Map;
 var gUpdatedOverrides;
 var gOverrideForHostCache = new Map;
 var gInitialized = false;
 var gOverrideFunctions = [
   function (aHttpChannel) { return UserAgentOverrides.getOverrideForURI(aHttpChannel.URI); }
 ];