1class ActionContext(object):
2    """
3    Provides the dependencies actions might need to execute.
4    """
5    def __init__(self,
6                 cfm_facade=None,
7                 file_contents_collector=None,
8                 host=None,
9                 usb_device_collector=None,
10                 usb_port_manager=None,
11                 crash_detector=None):
12        """
13        Initializes.
14
15        Parameters are set to None by default to make it easier to provide
16        a subset of dependencies in tests.
17
18        @param cfm_facade CFM facade to use, an instance of
19                CFMFacadeRemoteAdapter.
20        @param file_contents_collector object with a
21                collect_file_contents(file_name) method to get file contents
22                from the specified file on the DUT.
23        @param host an Host instance.
24        @param usb_device_collecor a UsbDeviceCollector instance.
25        @param usb_port_manager a UsbPortManager instance.
26        @param crash_detector a CrashDetector instance.
27        """
28        self.cfm_facade = cfm_facade
29        self.file_contents_collector = file_contents_collector
30        # TODO(kerl) consider using a facade to the Host to only provide an
31        # interface with what we need.
32        self.host = host
33        self.usb_device_collector = usb_device_collector
34        self.usb_port_manager = usb_port_manager
35        self.crash_detector = crash_detector
36
37