# HG changeset patch
# User liscju <piotr.listkiewicz@gmail.com>
# Date 2016-06-09 09:41:36
# Node ID fea71f66ebff0f7fe487cf731da0549efea9374b
# Parent  2c019aac6b995eedabbaca66b04a8813b0fb4124

url: remember http password database in ui object

This makes http password database stored in ui object.
It allows reusing authentication information when we
use this database for creating password manager for
the new connection.

diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -29,6 +29,8 @@ from . import (
     util,
 )
 
+urlreq = util.urlreq
+
 samplehgrcs = {
     'user':
 """# example user config (see "hg help config" for more info)
@@ -124,6 +126,8 @@ class ui(object):
             self.callhooks = src.callhooks
             self.insecureconnections = src.insecureconnections
             self.fixconfig()
+
+            self.httppasswordmgrdb = src.httppasswordmgrdb
         else:
             self.fout = sys.stdout
             self.ferr = sys.stderr
@@ -135,6 +139,8 @@ class ui(object):
             for f in scmutil.rcpath():
                 self.readconfig(f, trust=True)
 
+            self.httppasswordmgrdb = urlreq.httppasswordmgrwithdefaultrealm()
+
     def copy(self):
         return self.__class__(self)
 
@@ -142,6 +148,7 @@ class ui(object):
         """Clear internal state that shouldn't persist across commands"""
         if self._progbar:
             self._progbar.resetstate()  # reset last-print time of progress bar
+        self.httppasswordmgrdb = urlreq.httppasswordmgrwithdefaultrealm()
 
     def formatter(self, topic, opts):
         return formatter.formatter(self, topic, opts)
diff --git a/mercurial/url.py b/mercurial/url.py
--- a/mercurial/url.py
+++ b/mercurial/url.py
@@ -365,7 +365,7 @@ if has_https:
             urlreq.httpshandler.__init__(self)
             self.ui = ui
             self.pwmgr = passwordmgr(self.ui,
-                                     urlreq.httppasswordmgrwithdefaultrealm())
+                                     self.ui.httppasswordmgrdb)
 
         def _start_transaction(self, h, req):
             _generic_start_transaction(self, h, req)
@@ -482,7 +482,7 @@ def opener(ui, authinfo=None):
         handlers = [
             httpconnectionmod.http2handler(
                 ui,
-                passwordmgr(ui, urlreq.httppasswordmgrwithdefaultrealm()))
+                passwordmgr(ui, ui.httppasswordmgrdb))
         ]
     else:
         handlers = [httphandler()]
@@ -491,7 +491,7 @@ def opener(ui, authinfo=None):
 
     handlers.append(proxyhandler(ui))
 
-    passmgr = passwordmgr(ui, urlreq.httppasswordmgrwithdefaultrealm())
+    passmgr = passwordmgr(ui, ui.httppasswordmgrdb)
     if authinfo is not None:
         passmgr.add_password(*authinfo)
         user, passwd = authinfo[2:4]