OLD | NEW |
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import logging, os, re, string, time | 5 import logging, os, re, string, time |
6 from autotest_lib.client.bin import site_ui_test, test | 6 from autotest_lib.client.bin import site_ui_test, test |
7 from autotest_lib.client.common_lib import error, site_ui, utils | 7 from autotest_lib.client.common_lib import error, site_ui, utils |
8 | 8 |
9 class desktopui_IBusTest(site_ui_test.UITest): | 9 class desktopui_IBusTest(site_ui_test.UITest): |
10 version = 1 | 10 version = 1 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 'engine/PinyinFuzzyPinyin_S_SH', | 164 'engine/PinyinFuzzyPinyin_S_SH', |
165 'engine/PinyinFuzzyPinyin_UANG_UAN', | 165 'engine/PinyinFuzzyPinyin_UANG_UAN', |
166 'engine/PinyinFuzzyPinyin_UAN_UANG', | 166 'engine/PinyinFuzzyPinyin_UAN_UANG', |
167 'engine/PinyinFuzzyPinyin_ZH_Z', | 167 'engine/PinyinFuzzyPinyin_ZH_Z', |
168 'engine/PinyinFuzzyPinyin_Z_ZH', | 168 'engine/PinyinFuzzyPinyin_Z_ZH', |
169 'engine/PinyinCorrectPinyin_UEI_UI', | 169 'engine/PinyinCorrectPinyin_UEI_UI', |
170 'engine/PinyinIncompletePinyin', | 170 'engine/PinyinIncompletePinyin', |
171 'engine/PinyinLookupTableOrientation', | 171 'engine/PinyinLookupTableOrientation', |
172 'engine/PinyinSpecialPhrases', | 172 'engine/PinyinSpecialPhrases', |
173 | 173 |
174 # These preferences are actually read, but | |
175 # ibus-daemon reads them before chrome | |
176 # connects, so they show up as a false | |
177 # failure. | |
178 'general/hotkeynext_engine_in_menu', | |
179 'general/hotkeyprevious_engine', | |
180 'generalglobal_engine', | |
181 | |
182 # We don't set these prefernces. | 174 # We don't set these prefernces. |
183 'general/hotkeytrigger', | 175 'general/hotkeytrigger', |
184 'generalembed_preedit_text', | 176 'generalembed_preedit_text', |
185 'generalenable_by_default', | 177 'generalenable_by_default', |
186 'generalpreload_engines', | 178 'generalpreload_engines', |
187 'generaluse_global_engine', | 179 'generaluse_global_engine', |
188 'generaluse_system_keyboard_layout']) | 180 'generaluse_system_keyboard_layout']) |
189 | 181 |
| 182 # These preferences are actually written, but due to a race condition |
| 183 # on startup, they can be read by ibus-daemon before chrome connects, |
| 184 # and so sometimes they show up as a false failure. |
| 185 ignored_unwritten = set(['general/hotkeynext_engine_in_menu', |
| 186 'general/hotkeyprevious_engine', |
| 187 'generalglobal_engine']) |
| 188 |
190 self.preload_engines(engine_list) | 189 self.preload_engines(engine_list) |
191 | 190 |
192 # ibus takes some time to preload the engines, and they can't be | 191 # ibus takes some time to preload the engines, and they can't be |
193 # activated until they are done loading. Since we don't get notified | 192 # activated until they are done loading. Since we don't get notified |
194 # when they are ready, we have to wait here to give them time. | 193 # when they are ready, we have to wait here to give them time. |
195 time.sleep(2) | 194 time.sleep(2) |
196 | 195 |
197 # Send a ctrl+l to enter a text field. | 196 # Send a ctrl+l to enter a text field. |
198 ax = self.get_autox() | 197 ax = self.get_autox() |
199 ax.send_hotkey('Ctrl-l') | 198 ax.send_hotkey('Ctrl-l') |
200 | 199 |
201 for engine_name in engine_list: | 200 for engine_name in engine_list: |
202 self.activate_engine(engine_name) | 201 self.activate_engine(engine_name) |
203 | 202 |
204 out = self.run_ibusclient('get_unused') | 203 out = self.run_ibusclient('get_unused') |
205 match = re.match(r"Unread:(.*)Unwritten:(.*)", out, re.DOTALL) | 204 match = re.match(r"Unread:(.*)Unwritten:(.*)", out, re.DOTALL) |
206 if not match: | 205 if not match: |
207 raise error.TestFail('Could not read unused values from ibus') | 206 raise error.TestFail('Could not read unused values from ibus') |
208 | 207 |
209 actual_unread = set(re.split('\n', match.group(1).strip())) | 208 actual_unread = set(re.split('\n', match.group(1).strip())) |
210 actual_unwritten = set(re.split('\n', match.group(2).strip())) | 209 actual_unwritten = set(re.split('\n', match.group(2).strip())) |
211 | 210 |
| 211 # Filter out any preferences we're ignoring |
| 212 actual_unwritten.difference_update(ignored_unwritten) |
| 213 |
212 new_unread = actual_unread.difference(expected_unread) | 214 new_unread = actual_unread.difference(expected_unread) |
213 now_read = expected_unread.difference(actual_unread) | 215 now_read = expected_unread.difference(actual_unread) |
214 new_unwritten = actual_unwritten.difference(expected_unwritten) | 216 new_unwritten = actual_unwritten.difference(expected_unwritten) |
215 now_written = expected_unwritten.difference(actual_unwritten) | 217 now_written = expected_unwritten.difference(actual_unwritten) |
216 | 218 |
217 if new_unread or now_read or new_unwritten or now_written: | 219 if new_unread or now_read or new_unwritten or now_written: |
218 message = ['iBus config has changed:'] | 220 message = ['iBus config has changed:'] |
219 if new_unread: | 221 if new_unread: |
220 message.append('New unread values:') | 222 message.append('New unread values:') |
221 for key in new_unread: | 223 for key in new_unread: |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 "/usr/bin/ibus-daemon --panel=disable --cache=none --restart") | 276 "/usr/bin/ibus-daemon --panel=disable --cache=none --restart") |
275 time.sleep(2) | 277 time.sleep(2) |
276 self._candidate_window_job = utils.BgJob( | 278 self._candidate_window_job = utils.BgJob( |
277 "su chronos -c '/opt/google/chrome/candidate_window'") | 279 "su chronos -c '/opt/google/chrome/candidate_window'") |
278 start_time = time.time() | 280 start_time = time.time() |
279 while time.time() - start_time < timeout: | 281 while time.time() - start_time < timeout: |
280 if os.system('pgrep ^ibus-daemon$') == 0: | 282 if os.system('pgrep ^ibus-daemon$') == 0: |
281 return | 283 return |
282 time.sleep(1) | 284 time.sleep(1) |
283 raise error.TestFail('ibus-daemon is not running') | 285 raise error.TestFail('ibus-daemon is not running') |
OLD | NEW |