diff options
author | Aldo Cortesi <aldo@corte.si> | 2017-03-24 11:29:36 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@corte.si> | 2017-03-25 10:48:12 +1300 |
commit | 65f0885bd6809966f694d1ffb965401b8ab2cffc (patch) | |
tree | ea90d5849f57d6b74ca0cefbb4498ff10776a848 /mitmproxy/addonmanager.py | |
parent | d69a411303298c944d5941e0f3e435ff96800a69 (diff) | |
download | mitmproxy-65f0885bd6809966f694d1ffb965401b8ab2cffc.tar.gz mitmproxy-65f0885bd6809966f694d1ffb965401b8ab2cffc.tar.bz2 mitmproxy-65f0885bd6809966f694d1ffb965401b8ab2cffc.zip |
addon loader: add boot_into, which replaces returning from start()
While we're here, expand test coverage for addonmanager to 100%, and promote to
individual coverage.
Diffstat (limited to 'mitmproxy/addonmanager.py')
-rw-r--r-- | mitmproxy/addonmanager.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/mitmproxy/addonmanager.py b/mitmproxy/addonmanager.py index 1fc8e4dc..241b3cde 100644 --- a/mitmproxy/addonmanager.py +++ b/mitmproxy/addonmanager.py @@ -17,6 +17,7 @@ class Loader: """ def __init__(self, master): self.master = master + self.boot_into_addon = None def add_option( self, @@ -34,6 +35,12 @@ class Loader: choices ) + def boot_into(self, addon): + self.boot_into_addon = addon + func = getattr(addon, "load", None) + if func: + func(self) + class AddonManager: def __init__(self, master): @@ -65,11 +72,14 @@ class AddonManager: """ Add addons to the end of the chain, and run their startup events. """ - self.chain.extend(addons) with self.master.handlecontext(): - l = Loader(self.master) for i in addons: + l = Loader(self.master) self.invoke_addon(i, "load", l) + if l.boot_into_addon: + self.chain.append(l.boot_into_addon) + else: + self.chain.append(i) def remove(self, addon): """ |