blob: 510e280d10ab6b61c83a1c3e3efcacb270ceff6b [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright (c) 2012 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.
import gtk
import re
from autotest_lib.client.bin import test
from autotest_lib.client.cros import factory_setup_modules
from cros.factory.test import factory
from cros.factory.test import ui as ful
from cros.factory.event_log import EventLog
class factory_ScanSN(test.test):
version = 1
def on_sn_complete(self, serial_number):
EventLog.ForAutoTest().Log('ab_serial_number',
serial_number=serial_number)
factory.log('Serial number is: %s' % serial_number)
gtk.main_quit()
def on_validate(self, serial_number):
if self._sn_format is not None:
return self._sn_format.match(serial_number) is not None
else:
return True
def run_once(self, sn_format=None):
"""Scans (and optionally validates) a serial number.
Args:
sn_format: A regular expression which the serial number must match
(otherwise it is rejected). If None, any serial number is
accepted.
"""
factory.log('%s run_once' % self.__class__)
if sn_format is not None:
self._sn_format = re.compile(sn_format)
else:
self._sn_format = None
self.sn_input_widget = ful.make_input_window(
prompt='请扫描A/B面板条码\nScan A/B panel serial number:',
on_validate=self.on_validate,
on_keypress=None,
on_complete=self.on_sn_complete)
# Make sure the entry in widget will have focus.
self.sn_input_widget.connect(
"show",
lambda *x : self.sn_input_widget.get_entry().grab_focus())
self.test_widget = gtk.VBox()
self.test_widget.add(self.sn_input_widget)
ful.run_test_widget(self.job, self.test_widget)
factory.log('%s run_once finished' % self.__class__)