Source code for gaiatest.apps.settings.regions.bluetooth

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from marionette_driver import expected, By, Wait
from gaiatest.apps.base import PageRegion
from gaiatest.form_controls.binarycontrol import GaiaBinaryControl


[docs]class Bluetooth(PageRegion): _root_locator = (By.ID, 'bluetooth') _bluetooth_checkbox_locator = (By.CSS_SELECTOR, '#bluetooth .bluetooth-status gaia-switch') _bluetooth_label_locator = (By.CSS_SELECTOR, '[data-l10n-id="bluetooth"]') _visible_to_all_checkbox_locator = (By.CSS_SELECTOR, '#bluetooth .device-visible gaia-switch') _visible_to_all_label_locator = (By.CSS_SELECTOR, '[data-l10n-id="bluetooth-visible-to-all"]') _device_name_locator = (By.CSS_SELECTOR, '.bluetooth-device-name') _rename_my_device_button_locator = (By.CSS_SELECTOR, 'button.rename-device') _update_device_name_input_locator = (By.CSS_SELECTOR, 'input.settings-dialog-input') _update_device_name_ok_locator = (By.CSS_SELECTOR, '#settings-prompt-dialog .recommend') _search_for_devices_locator = (By.CSS_SELECTOR, 'button.search-device') _device_list_locator = (By.CLASS_NAME, "bluetooth-device") _bt_device_name_locator = (By.CSS_SELECTOR, "bdi") _confirm_dialog_locator = (By.ID, 'settings-confirm-dialog') _confirm_button_locator = (By.CLASS_NAME, 'danger') def __init__(self, marionette): root = marionette.find_element(*self._root_locator) PageRegion.__init__(self, marionette, root) Wait(self.marionette).until(expected.element_displayed(*self._bluetooth_label_locator)) @property def screen_element(self): return self.root_element @property def is_bluetooth_enabled(self): return self._bluetooth_switch.is_checked
[docs] def enable_bluetooth(self): self._bluetooth_switch.enable() rename_device = self.root_element.find_element(*self._rename_my_device_button_locator) Wait(self.marionette).until(expected.element_enabled(rename_device))
@property def _bluetooth_switch(self): return GaiaBinaryControl(self.marionette, self._bluetooth_checkbox_locator) @property def is_visible_enabled(self): return self._is_visible_switch.is_checked
[docs] def enable_visible_to_all(self): self._is_visible_switch.enable()
@property def _is_visible_switch(self): return GaiaBinaryControl(self.marionette, self._visible_to_all_checkbox_locator) @property def device_name(self): return self.root_element.find_element(*self._device_name_locator).text # workaround for bug 1202246. Need to call this method after frame switching
[docs] def refresh_root_element(self): self.root_element = self.marionette.find_element(*self._root_locator)
[docs] def disable_bluetooth(self): self._bluetooth_switch.disable()
[docs] def tap_rename_my_device(self): self.root_element.find_element(*self._rename_my_device_button_locator).tap() Wait(self.marionette).until( expected.element_displayed(*self._update_device_name_input_locator))
[docs] def type_phone_name(self, name): element = self.marionette.find_element(*self._update_device_name_input_locator) element.clear() element.send_keys(name)
[docs] def tap_update_device_name_ok(self): element = self.marionette.find_element(*self._update_device_name_ok_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() Wait(self.marionette).until(expected.element_not_displayed(element))
[docs] def tap_search_for_devices(self): element = self.root_element.find_element(*self._search_for_devices_locator) element.tap() Wait(self.marionette).until(expected.element_not_enabled(element)) Wait(self.marionette).until(expected.element_enabled(element))
[docs] def tap_device(self, name): elements = self.root_element.find_elements(*self._device_list_locator) for element in elements: child = element.find_element(*self._bt_device_name_locator) if child.text == name: child.tap() return True return False
[docs] def tap_confirm_unpair_device(self): confirm_dialog = self.marionette.find_element(*self._confirm_dialog_locator) confirm_dialog.find_element(*self._confirm_button_locator).tap()