Source code for gaiatest.apps.settings.regions.media_storage
# 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 Base
from gaiatest.apps.base import PageRegion
[docs]class MediaStorage(Base):
_page_locator = (By.ID, 'mediaStorage')
_advanced_header_locator = (By.CSS_SELECTOR, '[data-l10n-id="advanced"]')
_internal_storage_locator = (By.CSS_SELECTOR, '[data-id="internal"] + ul')
_external0_storage_locator = (By.CSS_SELECTOR, '[data-id="external-0"] + ul')
_internal_storage_header_locator = (By.CSS_SELECTOR, '[data-l10n-id="storage-name-internal"]')
_external0_storage_header_locator = (By.CSS_SELECTOR, '[data-l10n-id="storage-name-external-0"]')
_media_location_selector_locator = (By.ID, 'defaultMediaLocation')
_default_change_cancel_locator = (By.CSS_SELECTOR, 'button[type="reset"]')
_default_change_confirm_locator = (By.CSS_SELECTOR, 'button[type="submit"]')
_default_change_ok_button_locator = (By.CLASS_NAME, 'value-option-confirm')
def __init__(self, marionette):
Base.__init__(self, marionette)
# check for the presence of internal storage section and advanced option section
Wait(self.marionette).until(expected.element_displayed(*self._internal_storage_header_locator))
Wait(self.marionette).until(expected.element_displayed(*self._advanced_header_locator))
@property
def screen_element(self):
return self.marionette.find_element(*self._page_locator)
@property
def internal_storage(self):
element = self.marionette.find_element(*self._internal_storage_locator)
from gaiatest.apps.settings.regions.storage_region import StorageRegion
return StorageRegion(self.marionette, element)
@property
def external_storage0(self):
element = self.marionette.find_element(*self._external0_storage_locator)
from gaiatest.apps.settings.regions.storage_region import StorageRegion
return StorageRegion(self.marionette, element)
@property
def default_media_location(self):
element = self.marionette.find_element(*self._media_location_selector_locator)
return self.marionette.execute_script("""
return arguments[0].wrappedJSObject.selectedIndex;
""", [element]);
[docs] def tap_select_media_location(self):
# if scrollIntoView() method is used before tapping, it will cause a slight screen shift
self.marionette.find_element(*self._media_location_selector_locator).tap()
Wait(self.marionette).until(expected.element_displayed(*self._default_change_confirm_locator))
[docs] def confirm_select_media_location(self):
self.marionette.find_element(*self._default_change_confirm_locator).tap()
self.marionette.switch_to_frame()
Wait(self.marionette).until(expected.element_displayed(*self._default_change_ok_button_locator))
[docs] def pick_media_location(self,location):
if location == 'Internal':
_selection_locator = (By.CSS_SELECTOR, '[data-option-index="0"]')
elif location == 'SD Card':
_selection_locator = (By.CSS_SELECTOR, '[data-option-index="1"]')
else:
raise AttributeError('{} is not a media supported in the test'.format(location))
element = Wait(self.marionette).until(expected.element_present(*_selection_locator))
Wait(self.marionette).until(expected.element_displayed(element))
element.tap()
self.marionette.find_element(*self._default_change_ok_button_locator).tap()
self.apps.switch_to_displayed_app()
Wait(self.marionette).until(expected.element_displayed(*self._media_location_selector_locator))