普通文本  |  70行  |  1.98 KB

# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""An interface to access the local input facade."""


import json
import logging

from autotest_lib.client.bin.input import input_event_recorder
from autotest_lib.client.common_lib import error


class InputFacadeNativeError(Exception):
    """Error in InputFacadeNative."""
    pass


class InputFacadeNative(object):
    """Facade to access the record input events."""

    def __init__(self):
        """Initializes the input facade."""
        self.recorder = None


    def initialize_input_recorder(self, device_name):
        """Initialize an input event recorder object.

        @param device_name: the name of the input device to record.

        """
        self.recorder = input_event_recorder.InputEventRecorder(device_name)
        logging.info('input event device: %s (%s)',
                     self.recorder.device_name, self.recorder.device_node)


    def clear_input_events(self):
        """Clear the event list."""
        if self.recorder is None:
            raise error.TestError('input facade: input device name not given')
        self.recorder.clear_events()


    def start_input_recorder(self):
        """Start the recording thread."""
        if self.recorder is None:
            raise error.TestError('input facade: input device name not given')
        self.recorder.start()


    def stop_input_recorder(self):
        """Stop the recording thread."""
        if self.recorder is None:
            raise error.TestError('input facade: input device name not given')
        self.recorder.stop()


    def get_input_events(self):
        """Get the bluetooth device input events.

        @returns: the recorded input events.

        """
        if self.recorder is None:
            raise error.TestError('input facade: input device name not given')
        events = self.recorder.get_events()
        return json.dumps(events)