Bug 1209841 - Improve move_caret_by_offset() in selection.py. r=automatedtester

* Incorporate the for-loop in python into javascript so that we only
  need to call execute_script() once.
* Add documentation for parameters.
This commit is contained in:
Ting-Yu Lin 2015-09-30 18:29:34 +08:00
parent bca3bd2280
commit c96e6f7243

View File

@ -42,15 +42,21 @@ class SelectionManager(object):
return '''var sel = window.getSelection();'''
def move_caret_by_offset(self, offset, backward=False):
'''Move caret in the element by character offset.'''
cmd = self.js_selection_cmd() +\
'''sel.modify("move", arguments[1], "character");'''
direction = 'backward' if backward else 'forward'
'''Move caret in the element by character offset.
for i in range(offset):
self.element.marionette.execute_script(
cmd, script_args=[self.element, direction],
sandbox='system')
:param offset: Move the caret to the direction by offset characters.
:param backward: Optional, True to move backward; Default to False to
move forward.
'''
cmd = self.js_selection_cmd() + '''
for (let i = 0; i < %d; ++i) {
sel.modify("move", "%s", "character");
}
''' % (offset, 'backward' if backward else 'forward')
self.element.marionette.execute_script(
cmd, script_args=[self.element], sandbox='system')
def move_caret_to_front(self):
'''Move caret in the element to the front of the content.'''
@ -104,7 +110,7 @@ class SelectionManager(object):
considered.
'''
range_count = self.range_count();
range_count = self.range_count()
first_rect_list = self.selection_rect_list(0)
last_rect_list = self.selection_rect_list(range_count - 1)
last_list_length = last_rect_list['length']