class RunLoop::SimKeyboardSettings

Attributes

device[R]
pbuddy[R]
plist[R]

Public Class Methods

new(device) click to toggle source
# File lib/run_loop/sim_keyboard_settings.rb, line 5
def initialize(device)
  @device = device
  @pbuddy = RunLoop::PlistBuddy.new
end

Public Instance Methods

autocapitalization_enabled?() click to toggle source

Checks if plist value that responds for autocapitalization is set to true

@return [Boolean]

# File lib/run_loop/sim_keyboard_settings.rb, line 76
def autocapitalization_enabled?
  pbuddy.plist_read('KeyboardAutocapitalization', plist) == 'true'
end
autocorrection_enabled?() click to toggle source

Checks if plist value that responds for autocorrection is set to true

@return [Boolean]

# File lib/run_loop/sim_keyboard_settings.rb, line 62
def autocorrection_enabled?
  pbuddy.plist_read('KeyboardAutocorrection', plist) == 'true'
end
caps_lock_enabled?() click to toggle source

Checks if plist value that responds for caps lock is set to true

@return [Boolean]

# File lib/run_loop/sim_keyboard_settings.rb, line 69
def caps_lock_enabled?
  pbuddy.plist_read('KeyboardCapsLock', plist) == 'true'
end
enable_autocapitalization(condition) click to toggle source

Enable/disable keyboard autocapitalization

@param [Boolean] condition, option passed by the user in launch arguments default: nil(false)

# File lib/run_loop/sim_keyboard_settings.rb, line 55
def enable_autocapitalization(condition)
  pbuddy.plist_set('KeyboardAutocapitalization', 'bool', condition, plist)
end
enable_autocorrection(condition) click to toggle source

Enable/disable keyboard autocorrection

@param [Boolean] condition, option passed by the user in launch arguments default: nil(false)

# File lib/run_loop/sim_keyboard_settings.rb, line 39
def enable_autocorrection(condition)
  pbuddy.plist_set('KeyboardAutocorrection', 'bool', condition, plist)
end
enable_caps_lock(condition) click to toggle source

Enable/disable keyboard caps lock

@param [Boolean] condition, option passed by the user in launch arguments default: nil(false)

# File lib/run_loop/sim_keyboard_settings.rb, line 47
def enable_caps_lock(condition)
  pbuddy.plist_set('KeyboardCapsLock', 'bool', condition, plist)
end
ensure_keyboard_tutorial_disabled() click to toggle source
# File lib/run_loop/sim_keyboard_settings.rb, line 31
def ensure_keyboard_tutorial_disabled
  pbuddy.plist_set('DidShowContinuousPathIntroduction', 'bool', true, plist)
end
ensure_soft_keyboard_will_show() click to toggle source

Add properties needed for soft keyboard to show into preferences plist

# File lib/run_loop/sim_keyboard_settings.rb, line 25
def ensure_soft_keyboard_will_show
  pbuddy.plist_set('HardwareKeyboardLastSeen', 'bool', false, plist)
  pbuddy.plist_set('SoftwareKeyboardShownByTouch', 'bool', true, plist)
  pbuddy.plist_set('AutomaticMinimizationEnabled', 'bool', false, plist)
end
preferences_plist_path() click to toggle source

Get preferences plist path

@return nil if doesn’t run against simulator @return [String] with path to the plist

# File lib/run_loop/sim_keyboard_settings.rb, line 91
def preferences_plist_path
  return nil if device.physical_device?

  directory = File.join(device.simulator_root_dir, 'data', 'Library', 'Preferences')
  pbuddy.ensure_plist(directory, 'com.apple.Preferences.plist')
end
soft_keyboard_will_show?() click to toggle source

Check if all the properties needed for the soft keyboard to appear are set Approach to negate ‘true’ and ‘false’ was chosen in order to do not reboot sim too often, as this will cover the cases when the properties are not set which means that keyboard will be shown anyways

@return [Bool]

# File lib/run_loop/sim_keyboard_settings.rb, line 16
def soft_keyboard_will_show?
  hw_keyboard_disabled = pbuddy.plist_read('HardwareKeyboardLastSeen', plist) != 'true'
  soft_keyboard_enabled = pbuddy.plist_read('SoftwareKeyboardShownByTouch', plist) != 'false'
  minimization_disabled = pbuddy.plist_read('AutomaticMinimizationEnabled', plist) != 'true'

  hw_keyboard_disabled && minimization_disabled && soft_keyboard_enabled
end