PageRenderTime 50ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/apps/settings/test/marionette/app/app.js

https://gitlab.com/Guy1394/gaia
JavaScript | 273 lines | 226 code | 35 blank | 12 comment | 6 complexity | b93c59a22d41d9458df81a726096066b MD5 | raw file
  1. 'use strict';
  2. var AppStoragePanel = require('./regions/app_storage');
  3. var AppPermissionPanel = require('./regions/app_permission');
  4. var Base = require('./base');
  5. var BatteryPanel = require('./regions/battery');
  6. var BluetoothPanel = require('./regions/bluetooth');
  7. var BrowsingPrivacyPanel = require('./regions/browsing_privacy');
  8. var DateTimePanel = require('./regions/date_time');
  9. var DeveloperPanel = require('./regions/developer');
  10. var DeviceInfoPanel = require('./regions/device_info');
  11. var DisplayPanel = require('./regions/display');
  12. var DoNotTrackPanel = require('./regions/do_not_track');
  13. var FeedbackPanel = require('./regions/feedback');
  14. var HotspotPanel = require('./regions/hotspot');
  15. var HotspotSettingsPanel = require('./regions/hotspot_settings');
  16. var ImprovePanel = require('./regions/improve');
  17. var KeyboardPanel = require('./regions/keyboard');
  18. var LanguagePanel = require('./regions/language');
  19. var MediaStoragePanel = require('./regions/media_storage');
  20. var MessagePanel = require('./regions/message');
  21. var NotificationsPanel = require('./regions/notifications');
  22. var RootPanel = require('./regions/root');
  23. var ScreenLockPanel = require('./regions/screen_lock');
  24. var SoundPanel = require('./regions/sound');
  25. var SupportPanel = require('./regions/support');
  26. var UsbStoragePanel = require('./regions/usb_storage');
  27. /**
  28. * Abstraction around settings app
  29. * @constructor
  30. * @param {Marionette.Client} client for operations.
  31. */
  32. function Settings(client) {
  33. this.client = client;
  34. // Call the Base constructor to initiate base class.
  35. Base.call(this, this.client, Settings.ORIGIN, Settings.Selectors);
  36. }
  37. // origin of the settings app
  38. Settings.ORIGIN = 'app://settings.gaiamobile.org';
  39. module.exports = Settings;
  40. Settings.Selectors = {
  41. 'menuItemsSection': '#root',
  42. 'appPermissionMenuItem': '#menuItem-appPermissions',
  43. 'appStorageMenuItem': '.menuItem-applicationStorage',
  44. 'batteryMenuItem': '.menuItem-battery',
  45. 'bluetoothMenuItem': '#menuItem-bluetooth',
  46. 'browsingPrivacyMenuItem': '#menuItem-browsingPrivacy',
  47. 'dateTimeMenuItem': '#menuItem-dateAndTime',
  48. 'developerMenuItem': '#menuItem-developer',
  49. 'deviceInfoMenuItem': '#menuItem-deviceInfo',
  50. 'displayMenuItem': '#menuItem-display',
  51. 'doNotTrackMenuItem': '#menuItem-doNotTrack',
  52. 'feedbackMenuItem': 'a[href="#improveBrowserOS-chooseFeedback"]',
  53. 'hotspotMenuItem': '#menuItem-internetSharing',
  54. 'hotspotPanel': '#hotspot',
  55. 'hotspotSettingsTrigger': '#hotspot-settings-section button',
  56. 'improveMenuItem': '#menuItem-improveBrowserOS',
  57. 'improveSection': '#improveBrowserOS',
  58. 'keyboardMenuItem': '#menuItem-keyboard',
  59. 'languageMenuItem': '.menuItem-languageAndRegion',
  60. 'mediaStorageMenuItem': '.menuItem-mediaStorage',
  61. 'messageMenuItem': '#menuItem-messagingSettings',
  62. 'notificationsMenuItem': '#menuItem-notifications',
  63. 'screenLockMenuItem': '#menuItem-screenLock',
  64. 'soundMenuItem': '#menuItem-sound',
  65. 'supportMenuItem': '#menuItem-help',
  66. 'usbStorageMenuItem': '.menuItem-enableStorage'
  67. };
  68. Settings.prototype = {
  69. __proto__: Base.prototype,
  70. get rootPanel() {
  71. this._rootPanel = this._rootPanel ||
  72. new RootPanel(this.client);
  73. return this._rootPanel;
  74. },
  75. get bluetoothPanel() {
  76. this.openPanel('bluetoothMenuItem');
  77. this._bluetoothPanel = this._bluetoothPanel ||
  78. new BluetoothPanel(this.client);
  79. return this._bluetoothPanel;
  80. },
  81. get doNotTrackPanel() {
  82. this.openPanel('doNotTrackMenuItem');
  83. this._doNotTrackPanel = this._doNotTrackPanel ||
  84. new DoNotTrackPanel(this.client);
  85. return this._doNotTrackPanel;
  86. },
  87. get browsingPrivacyPanel() {
  88. this.openPanel('browsingPrivacyMenuItem');
  89. this._browsingPrivacyPanel = this._browsingPrivacyPanel ||
  90. new BrowsingPrivacyPanel(this.client);
  91. return this._browsingPrivacyPanel;
  92. },
  93. get hotspotPanel() {
  94. this.openPanel('hotspotMenuItem');
  95. this._hotspotPanel = this._hotspotPanel ||
  96. new HotspotPanel(this.client);
  97. return this._hotspotPanel;
  98. },
  99. get hotspotSettingsPanel() {
  100. this.openPanel('hotspotSettingsTrigger', 'hotspotPanel');
  101. this._hotspotSettingsPanel = this._hotspotSettingsPanel ||
  102. new HotspotSettingsPanel(this.client);
  103. return this._hotspotSettingsPanel;
  104. },
  105. get supportPanel() {
  106. this.openPanel('supportMenuItem');
  107. this._supportPanel = this._supportPanel ||
  108. new SupportPanel(this.client);
  109. return this._supportPanel;
  110. },
  111. get batteryPanel() {
  112. this.openPanel('batteryMenuItem');
  113. this._batteryPanel = this._batteryPanel ||
  114. new BatteryPanel(this.client);
  115. return this._batteryPanel;
  116. },
  117. get dateTimePanel() {
  118. this.openPanel('dateTimeMenuItem');
  119. this._dateTimePanel = this._dateTimePanel ||
  120. new DateTimePanel(this.client);
  121. return this._dateTimePanel;
  122. },
  123. get notificationsPanel() {
  124. this.openPanel('notificationsMenuItem');
  125. this._notificationsPanel = this._notificationsPanel ||
  126. new NotificationsPanel(this.client);
  127. return this._notificationsPanel;
  128. },
  129. get soundPanel() {
  130. this.openPanel('soundMenuItem');
  131. this._soundPanel = this._soundPanel ||
  132. new SoundPanel(this.client);
  133. return this._soundPanel;
  134. },
  135. get languagePanel() {
  136. this.openPanel('languageMenuItem');
  137. this._languagePanel = this._languagePanel ||
  138. new LanguagePanel(this.client);
  139. return this._languagePanel;
  140. },
  141. get screenLockPanel() {
  142. this.openPanel('screenLockMenuItem');
  143. this._screenLockPanel = this._screenLockPanel ||
  144. new ScreenLockPanel(this.client);
  145. return this._screenLockPanel;
  146. },
  147. get displayPanel() {
  148. this.openPanel.call(this, 'displayMenuItem');
  149. this._displayPanel = this._displayPanel ||
  150. new DisplayPanel(this.client);
  151. return this._displayPanel;
  152. },
  153. get improvePanel() {
  154. this.openPanel.call(this, 'improveMenuItem');
  155. this._improvePanel = this._improvePanel ||
  156. new ImprovePanel(this.client);
  157. return this._improvePanel;
  158. },
  159. get feedbackPanel() {
  160. this.openPanel.call(this, 'feedbackMenuItem', 'improveSection');
  161. this._feedbackPanel =
  162. this._feedbackPanel || new FeedbackPanel(this.client);
  163. return this._feedbackPanel;
  164. },
  165. get appPermissionPanel() {
  166. this.openPanel.call(this, 'appPermissionMenuItem');
  167. this._appPermissionPanel =
  168. this._appPermissionPanel || new AppPermissionPanel(this.client);
  169. return this._appPermissionPanel;
  170. },
  171. get appStoragePanel() {
  172. this.openPanel.call(this, 'appStorageMenuItem');
  173. this._appStoragePanel =
  174. this._appStoragePanel || new AppStoragePanel(this.client);
  175. return this._appStoragePanel;
  176. },
  177. get mediaStoragePanel() {
  178. this.openPanel('mediaStorageMenuItem');
  179. this._mediaStoragePanel = this._mediaStoragePanel ||
  180. new MediaStoragePanel(this.client);
  181. return this._mediaStoragePanel;
  182. },
  183. get keyboardPanel() {
  184. this.openPanel('keyboardMenuItem');
  185. this._keyboardPanel = this._keyboardPanel || new KeyboardPanel(this.client);
  186. return this._keyboardPanel;
  187. },
  188. get messagePanel() {
  189. this.openPanel('messageMenuItem');
  190. this._messagePanel = this._messagePanel || new MessagePanel(this.client);
  191. return this._messagePanel;
  192. },
  193. get aboutPanel() {
  194. this.openPanel('deviceInfoMenuItem');
  195. this._aboutPanel = this._aboutPanel ||
  196. new DeviceInfoPanel(this.client);
  197. return this._aboutPanel;
  198. },
  199. get developerPanel() {
  200. this.openPanel('developerMenuItem');
  201. this._developerPanel = this._developerPanel ||
  202. new DeveloperPanel(this.client);
  203. return this._developerPanel;
  204. },
  205. get usbStoragePanel() {
  206. this.openPanel('usbStorageMenuItem');
  207. this._usbStoragePanel = this._usbStoragePanel ||
  208. new UsbStoragePanel(this.client);
  209. return this._usbStoragePanel;
  210. },
  211. set currentLanguage(value) {
  212. // open the language panel
  213. var languagePanel = this.languagePanel;
  214. languagePanel.currentLanguage = value;
  215. languagePanel.back();
  216. },
  217. /**
  218. * @private
  219. */
  220. openPanel: function app_openPanel(selector, parentSelector) {
  221. var localParentSelector = parentSelector || 'menuItemsSection';
  222. var menuItem = this.waitForElement(selector);
  223. var parentSection = this.waitForElement(localParentSelector);
  224. // make sure it is enabled first
  225. this.client.waitFor(function() {
  226. return this.findElement('messageMenuItem').enabled();
  227. }.bind(this));
  228. menuItem.scriptWith(function(el) {
  229. el.scrollIntoView(false);
  230. });
  231. menuItem.tap();
  232. this.client.waitFor(function() {
  233. var loc = parentSection.location();
  234. var size = parentSection.size();
  235. return Math.abs(loc.x) === size.width;
  236. });
  237. }
  238. };