Home | History | Annotate | Download | only in cros
      1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 class ShillTemporaryProfile(object):
      6     """Context enclosing the use of a temporary shill profile.  It takes
      7     a shill manager dbus object and profile name, and makes sure that
      8     this profile is pushed atop the topmost default profile for the duration
      9     of this object lifetime."""
     10     def __init__(self, manager, profile_name='test'):
     11         self._manager = manager
     12         self._profile_name = profile_name
     13 
     14 
     15     def __enter__(self):
     16         self._manager.PopAllUserProfiles()
     17         try:
     18             self._manager.RemoveProfile(self._profile_name)
     19         except:
     20             pass
     21         self._manager.CreateProfile(self._profile_name)
     22         self._manager.PushProfile(self._profile_name)
     23         return self
     24 
     25 
     26     def __exit__(self, exception, value, traceback):
     27         try:
     28             self._manager.PopProfile(self._profile_name)
     29             self._manager.RemoveProfile(self._profile_name)
     30         except:
     31             pass
     32