Source code for gaiatest.apps.testapp.app

# 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


[docs]class TestContainer(Base): name = 'Test Container' manifest_url = '{}test-container{}/manifest.webapp'.format(Base.DEFAULT_PROTOCOL,Base.DEFAULT_APP_HOSTNAME) _app_selector = (By.CSS_SELECTOR, 'iframe[src*="test-container"][src*="/index.html"]') _main_frame_locator = (By.ID, 'test-container') _dummy_system_message_id = 'dummy-system-message'
[docs] def launch(self): Base.launch(self) Wait(self.marionette).until( expected.element_present(*self._main_frame_locator))
[docs] def wait_until_launched(self): self.marionette.switch_to_frame() Wait(self.marionette).until( expected.element_present(*self._app_selector))
# Set dummy message handler which will place the message # carried by dummy system message in the element with id # |msg_placeholder_id|
[docs] def set_dummy_system_message_handler(self, msg_placeholder_id): self.marionette.execute_script(""" navigator.mozSetMessageHandler('%s', function(msg) { var messageLabel = document.createElement('label'); messageLabel.id = '%s'; messageLabel.innerHTML = msg.value; let container = document.getElementById('test-container'); document.body.insertBefore(messageLabel, container); }); """ % (self._dummy_system_message_id, msg_placeholder_id))
# Broadcast dummy system message which will carry message |msg|
[docs] def broadcast_dummy_system_message(self, msg): self.marionette.set_context(self.marionette.CONTEXT_CHROME) self.marionette.execute_script(""" Components.classes["@mozilla.org/system-message-internal;1"] .getService(Ci.nsISystemMessagesInternal) .broadcastMessage('%s', { value: '%s' }, {}); """ % (self._dummy_system_message_id, msg)) self.marionette.set_context(self.marionette.CONTEXT_CONTENT)
[docs] def find_message_text(self, msg_placeholder_id): message = self.marionette.find_element(By.ID, msg_placeholder_id) return message.text