# Copyright (c) 2014 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """The extensions option page.""" from extension_pages import ExtensionPages from selenium.webdriver.common.action_chains import ActionChains CHECK_BOX_LIST = {'send_usage': 'sendUsage'} TEXT_BOX_LIST = {'min_video_bitrate': 'minVideoBitrate', 'max_video_bitrate': 'maxVideoBitrate', 'max_tab_frame_rate': 'maxFrameRate', 'add_debug_dongle_ip': 'newReceiverIp'} RADIO_BUTTON_LIST = {'tab_casting_quality': {'extreme': 'ql-highest', 'high': 'ql-high', 'standard': 'ql-low', 'auto': 'ql-auto'}, 'resolution': {'854x480': '854x480', '1280x720': '1280x720', '1920x1080': '1920x1080'} } BUTTON_LIST = {'reload': 'reload'} class OptionsPage(ExtensionPages): """Contains all the controls on the options page of the extension.""" def __init__(self, driver, extension_id): """Constructor.""" self._options_url = 'chrome-extension://%s/options.html' % extension_id ExtensionPages.__init__(self, driver, self._options_url) def set_value(self, field, value): """Set the value of a specific field on the options page. @param field: The name of the control @param value: The value to set """ self.go_to_page() if field in CHECK_BOX_LIST.keys(): check_box = self._get_check_box(CHECK_BOX_LIST[field], field) check_box.set_value(value) elif field in TEXT_BOX_LIST.keys(): text_box = self._get_text_box(TEXT_BOX_LIST[field], field) text_box.set_value(value) elif field in RADIO_BUTTON_LIST.keys(): radio_button = self._get_radio_button( RADIO_BUTTON_LIST[field][value], field) radio_button.click() def min_video_bitrate_text_box(self): """The minimum video bit rate text box.""" return self._get_text_box(TEXT_BOX_LIST['min_video_bitrate'], 'min_video_bitrate') def max_tab_frame_rate_text_box(self): """The maximum tab frame rate text box.""" return self._get_text_box(TEXT_BOX_LIST['max_tab_frame_rate'], 'max_tab_frame_rate') def reload_button(self): """The reload button.""" return self._get_button(BUTTON_LIST['reload'], 'reload') def highest_projection_radio_button(self): """The Extreme tab projection quality radio button.""" return self._get_radio_button( RADIO_BUTTON_LIST['highest_tab_projection_quality'], 'highest_tab_projection_quality') def high_projection_radio_button(self): """The High tab projection quality radio button.""" return self._get_radio_button( RADIO_BUTTON_LIST['high_tab_projection_quality'], 'high_tab_projection_quality') def low_projection_radio_button(self): """The Low tab projection quality radio button.""" return self._get_radio_button( RADIO_BUTTON_LIST['low_tab_projection_quality'], 'low_tab_projection_quality') def resolution_640x360_radio_button(self): """The 640x360 resolution radio button.""" return self._get_radio_button(RADIO_BUTTON_LIST['resolution_640_360'], 'resolution_640_360') def resolution_854x480_radio_button(self): """The 854x640 resolution radio button.""" return self._get_radio_button(RADIO_BUTTON_LIST['resolution_854_480'], 'resolution_854_480') def resolution_1280x720_radio_button(self): """The 1280x720 resolution radio button.""" return self._get_radio_button(RADIO_BUTTON_LIST['resolution_1280_720'], 'resolution_1280_720') def resolution_1980x1080_radio_button(self): """The 1980x1080 resolution radio button.""" return self._get_radio_button( RADIO_BUTTON_LIST['resolution_1920_1080'], 'resolution_1920_1080') def tab_casting_standard_radio_button(self): """The tab casting mode standard radio button.""" return self._get_radio_button(RADIO_BUTTON_LIST['cast_streaming_off'], 'cast_streaming_off') def tab_casting_enchanced_radio_button(self): """The tab casting mode enhanced radio button.""" return self._GetRadioButton(RADIO_BUTTON_LIST['cast_streaming_on'], 'cast_streaming_on') def send_usage_check_box(self): """The send usage check box.""" return self._get_check_box(CHECK_BOX_LIST['send_usage'], 'send_usage') def open_hidden_options_menu(self): """Open the hidden options page.""" self.go_to_page() element = self._driver.find_element_by_id('cast-icon') double_click_action = ActionChains(self._driver).double_click(element) double_click_action.perform() double_click_action.perform()