Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Side by Side Diff: client/site_tests/hardware_KeyboardAssembly/src/KeyboardTest.py

Issue 1574012: Parametrize the keyboard test so that it can run in hwqual. Add to hwqual suite. (Closed)
Patch Set: Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # 2 #
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # DESCRIPTION : 7 # DESCRIPTION :
8 # 8 #
9 # Intended for use during manufacturing to validate that all keyboard 9 # Intended for use during manufacturing to validate that all keyboard
10 # keys function properly. Run normally, this program will display a 10 # keys function properly. Run normally, this program will display a
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 pass_msg_timeout = 2 111 pass_msg_timeout = 2
112 112
113 # Background color and alpha for the final result message. 113 # Background color and alpha for the final result message.
114 bg_rgba_error = (0.7, 0, 0, 0.9) 114 bg_rgba_error = (0.7, 0, 0, 0.9)
115 bg_rgba_pass = ( 0, 0.7, 0, 0.9) 115 bg_rgba_pass = ( 0, 0.7, 0, 0.9)
116 116
117 # Highlight color and alpha to indicate activated keys. 117 # Highlight color and alpha to indicate activated keys.
118 rgba_press_and_release = ( 0, 0.5, 0, 0.6) 118 rgba_press_and_release = ( 0, 0.5, 0, 0.6)
119 rgba_press_only = (0.6, 0.6, 0, 0.6) 119 rgba_press_only = (0.6, 0.6, 0, 0.6)
120 120
121 def __init__(self, kbd_image): 121 def __init__(self, kbd_image, exit_on_error=False):
122 self._kbd_image = kbd_image 122 self._kbd_image = kbd_image
123 self._exit_on_error = exit_on_error
123 self._pressed_keys = set() 124 self._pressed_keys = set()
124 self._successful_keys = set() 125 self._successful_keys = set()
125 self._deadline = None 126 self._deadline = None
126 self._success = None 127 self._success = None
127 128
128 def missing_keys(self): 129 def missing_keys(self):
129 return set(KeyboardTest.bindings) - self._successful_keys 130 return set(KeyboardTest.bindings) - self._successful_keys
130 131
131 def show_result(self, widget, context, text, bg_rgba): 132 def show_result(self, widget, context, text, bg_rgba):
132 widget_width, widget_height = widget.get_size_request() 133 widget_width, widget_height = widget.get_size_request()
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 def timer_event(self, window): 167 def timer_event(self, window):
167 if not self._deadline: 168 if not self._deadline:
168 # Ignore timer events with no countdown in progress. 169 # Ignore timer events with no countdown in progress.
169 return True 170 return True
170 if self._deadline <= time.time(): 171 if self._deadline <= time.time():
171 self._deadline = None 172 self._deadline = None
172 if self._success is None: 173 if self._success is None:
173 self._success = False 174 self._success = False
174 mk = ['0x%x' % k for k in self.missing_keys()] 175 mk = ['0x%x' % k for k in self.missing_keys()]
175 print 'missing_keys = %s' % ', '.join(mk) 176 print 'missing_keys = %s' % ', '.join(mk)
177 if self._exit_on_error:
178 sys.exit(1)
176 elif self._success: 179 elif self._success:
177 sys.exit(0) 180 sys.exit(0)
178 window.queue_draw() 181 window.queue_draw()
179 return True 182 return True
180 183
181 def expose_event(self, widget, event): 184 def expose_event(self, widget, event):
182 context = widget.window.cairo_create() 185 context = widget.window.cairo_create()
183 186
184 # Show keyboard image as the background. 187 # Show keyboard image as the background.
185 context.set_source_surface(self._kbd_image, 0, 0) 188 context.set_source_surface(self._kbd_image, 0, 0)
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 drawing_area = gtk.DrawingArea() 378 drawing_area = gtk.DrawingArea()
376 drawing_area.set_size_request(*kbd_image_size) 379 drawing_area.set_size_request(*kbd_image_size)
377 380
378 if len(sys.argv) > 1 and sys.argv[1] == '--setup': 381 if len(sys.argv) > 1 and sys.argv[1] == '--setup':
379 kt = KeyboardTestSetup(kbd_image) 382 kt = KeyboardTestSetup(kbd_image)
380 window.set_default_size(981, 450) 383 window.set_default_size(981, 450)
381 window.connect('key-press-event', kt.key_press_event) 384 window.connect('key-press-event', kt.key_press_event)
382 drawing_area.connect('button_release_event', kt.button_release_event) 385 drawing_area.connect('button_release_event', kt.button_release_event)
383 drawing_area.connect('button_press_event', kt.button_press_event) 386 drawing_area.connect('button_press_event', kt.button_press_event)
384 else: 387 else:
385 kt = KeyboardTest(kbd_image) 388 exit_on_error = False
389 if '--exit-on-error' in sys.argv:
390 exit_on_error = True
391 kt = KeyboardTest(kbd_image, exit_on_error=exit_on_error)
386 screen = window.get_screen() 392 screen = window.get_screen()
387 screen_size = (screen.get_width(), screen.get_height()) 393 screen_size = (screen.get_width(), screen.get_height())
388 window.set_default_size(*screen_size) 394 window.set_default_size(*screen_size)
389 window.connect('key-press-event', kt.key_press_event) 395 window.connect('key-press-event', kt.key_press_event)
390 window.connect('key-release-event', kt.key_release_event) 396 window.connect('key-release-event', kt.key_release_event)
391 gobject.timeout_add(1000, kt.timer_event, window) 397 gobject.timeout_add(1000, kt.timer_event, window)
392 398
393 drawing_area.connect('expose_event', kt.expose_event) 399 drawing_area.connect('expose_event', kt.expose_event)
394 400
395 drawing_area.show() 401 drawing_area.show()
396 402
397 align = gtk.Alignment(xalign=0.5, yalign=0.5) 403 align = gtk.Alignment(xalign=0.5, yalign=0.5)
398 align.add(drawing_area) 404 align.add(drawing_area)
399 align.show() 405 align.show()
400 406
401 drawing_area.set_events(gtk.gdk.EXPOSURE_MASK | 407 drawing_area.set_events(gtk.gdk.EXPOSURE_MASK |
402 gtk.gdk.KEY_PRESS_MASK | 408 gtk.gdk.KEY_PRESS_MASK |
403 gtk.gdk.BUTTON_PRESS_MASK | 409 gtk.gdk.BUTTON_PRESS_MASK |
404 gtk.gdk.BUTTON_RELEASE_MASK) 410 gtk.gdk.BUTTON_RELEASE_MASK)
405 411
406 window.add(align) 412 window.add(align)
407 window.show() 413 window.show()
408 414
409 gtk.main() 415 gtk.main()
410 416
411 return (kt.success != True) 417 return (kt.success != True)
412 418
413 if __name__ == '__main__': 419 if __name__ == '__main__':
414 main() 420 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698