<commit_before><?xml version = "1.0"?>
<?xml-stylesheet type="text/xsl" href="pb_help.xsl"?>
<API>
    <MODULE name="System" parent="Rho" generateUnderscoreRubyNames="true">
        <HELP_OVERVIEW>The System API is used to control and modify core aspects of the device such as the screen, OS and device capabilities.</HELP_OVERVIEW>
        <MORE_HELP>
## Enabling the API
This API is part of the `coreapi` extension that is included automatically.
    :::ruby
    extensions: ["coreapi"]

## JavaScript Usage
Be sure to review the [JavaScript API Usage](/guide/api_js) guide for important information about using this API in JavaScript.

## Ruby Usage
Be sure to review the [Ruby API Usage](/guide/api_ruby) guide for important information about using this API in Ruby.
        </MORE_HELP>
        <MORE_HELP_EB>
## Enabling the API
There are two methods of enabling the System API:

* Include all ebapi modules or
* Include only the API modules you need

For either of these methods, you'll need to include files from the `/Enterprise Browser/JavaScript Files/Enterprise Browser` directory on the computer that you installed the Enterprise Browser.

### Include all JS API modules
To include all JS APIs, you must copy the ebapi-modules.js file to a location accessible by your app's files and include the JavaScript file in your app. For instance, to include the modules file in your index.html, with the file in the same directory as your index.html, you would add the following line to the &lt;head&gt; section of your index.html:

    :::html
    &lt;script type="text/javascript" charset="utf-8" src="ebapi-modules.js"&gt;&lt;/script&gt;

> Note: that the pathing for this file is relative to the current page.

This will define the EB class within the page. Any page you need to use the modules will need to have the .js file included in this fashion.

### Include only the modules you need
To include single APIs, you must first include the `ebapi.js` in your HTML as well as the API file you want to use. For instance, to use the System API, I would add the following code to my HTML file(s), assuming the API files have been copied to the same directory as the HTML.

    :::html
    &lt;script type="text/javascript" charset="utf-8" src="ebapi.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" charset="utf-8" src="eb.system.js"&gt;&lt;/script&gt;

The ebapi.js file is necessary for all single API inclusions.
        </MORE_HELP_EB>
        <ALIASES>
            <ALIAS new="System" deprecated="true"/>
        </ALIASES>
        <TEMPLATES>
            <!-- <DEFAULT_INSTANCE/> -->
            <PROPERTY_BAG/> <!-- object has properties, produce getProps(), setProps() methods -->
        </TEMPLATES>
        <PROPERTIES usePropertyBag="PropertyBagViaAccessors" limitPropertyBag="true" access="STATIC">
            <DESC>The System API supports the following properties.</DESC>
            <ALIASES>
                <ALIAS new="http_proxy_url" existing="httpProxyURI" deprecated="true"/>
                <ALIAS new="deviceId" existing="devicePushId" deprecated="true"/>
                <ALIAS new="isMotorolaDevice" existing="isSymbolDevice" deprecated="true"/>
            </ALIASES>
            <PROPERTY name="main_window_closed" type="BOOLEAN" readOnly="true" generateDoc="false">
                <DESC>It is internal property for using in debugger (signal for main window close).</DESC>
            </PROPERTY>
            <PROPERTY name="platform" type="STRING" readOnly="true">
                <DESC>Platform where application is running.</DESC>
                <VALUES>
                    <VALUE constName="PLATFORM_WM_CE" value ="WINDOWS">
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_ANDROID" value ="ANDROID">
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_IOS" value ="APPLE" productException='eb'>
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_WP8" value ="WP8" productException='eb'>
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_WINDOWS_DESKTOP" value ="WINDOWS_DESKTOP">
                        <DESC></DESC>
                    </VALUE>
                </VALUES>
                <PLATFORM_EB>WM, CE, Win32, Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="hasCamera" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if there is a camera available on the device.</DESC>
            </PROPERTY>
            <PROPERTY name="screenWidth" type="INTEGER" readOnly="true">
                <DESC>Screen width in logical pixels (used for set coordinates).</DESC>
            </PROPERTY>
            <PROPERTY name="screenHeight" type="INTEGER" readOnly="true">
                <DESC>Screen height in logical pixels (used for set coordinates).</DESC>
            </PROPERTY>
            <PROPERTY name="realScreenWidth" type="INTEGER" readOnly="true">
                <DESC>Screen width in real pixels.</DESC>
            </PROPERTY>
            <PROPERTY name="realScreenHeight" type="INTEGER" readOnly="true">
                <DESC>Screen height in real pixels.</DESC>
            </PROPERTY>
            <PROPERTY name="screenOrientation" type="STRING" readOnly="true">
                <DESC>Current screen orientation.</DESC>
                <VALUES>
                    <VALUE constName="SCREEN_PORTRAIT" value ="portrait">
                        <DESC>The return value if the screen is in portrait mode.</DESC>
                    </VALUE>
                    <VALUE constName="SCREEN_LANDSCAPE" value ="landscape">
                        <DESC>The return value if the screen is in landscape mode.</DESC>
                    </VALUE>
                </VALUES>
            </PROPERTY>
            <PROPERTY name="ppiX" type="INTEGER" readOnly="true">
                <DESC>Horizontal PPI (Pixels Per Inch).</DESC>
            </PROPERTY>
            <PROPERTY name="ppiY" type="INTEGER" readOnly="true">
                <DESC>Vertical PPI (Pixels Per Inch).</DESC>
            </PROPERTY>

            <PROPERTY name="deviceOwnerEmail" type="STRING" readOnly="true">
                <DESC>Primary email of phone owner. To access this property 'pim' capability must be enabled in your build.yml.</DESC>
                <PLATFORM>Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="deviceOwnerName" type="STRING" readOnly="true">
                <DESC>Name(account name) of phone owner. To access this property 'pim' capability must be enabled in your build.yml.</DESC>
                <PLATFORM>Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="devicePushId" type="STRING" readOnly="true">
                <DESC>Push notifications device ID which may be used to receive push messages.To get this ID , Push service should be configured on the device. Please refer to Push documentation.</DESC>
            </PROPERTY>
            <PROPERTY name="phoneId" type="STRING" readOnly="true">
                <DESC>Hardware based ID. It depends on capabilities configured for an application and has to remain same even across application uninstall/install.</DESC>
                <PLATFORM>WM, CE, Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="deviceName" type="STRING" readOnly="true">
                <DESC>Name of device application running on. Examples: '9000' (BB), 'iPhone', 'dream' (Android).</DESC>
            </PROPERTY>
            <PROPERTY name="osVersion" type="STRING" readOnly="true">
                <DESC>Version OS of device. Examples:  '4.1' (Android).</DESC>
            </PROPERTY>
            <PROPERTY name="locale" type="STRING" readOnly="true">
                <DESC>Current device locale Like 'en', 'ru' etc.</DESC>
            </PROPERTY>
            <PROPERTY name="country" type="STRING" readOnly="true">
                <DESC>Current device country code.</DESC>
            </PROPERTY>
            <PROPERTY name="isEmulator" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if the application is running on a platform emulator.</DESC>
            </PROPERTY>
            <PROPERTY name="isRhoSimulator" type="BOOLEAN" readOnly="true" productException="eb">
                <DESC>Returns true if the application is running on RhoSimulator.</DESC>
            </PROPERTY>
            <PROPERTY name="hasCalendar" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if calendar support is available.</DESC>
            </PROPERTY>
            <PROPERTY name="isSymbolDevice" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if the device supports Symbol device capabilities. APIs will indicate if the property or method is available on Symbol devices only. You can use this property to help your application decide when to take advantage of advanced Symbol capabilities.</DESC>
            </PROPERTY>
            <PROPERTY name="oemInfo" type="STRING" readOnly="true">
                <DESC>The OEM Information string for the terminal.</DESC>
                <APPLIES msiOnly="true"></APPLIES>
                <PLATFORM>WM, CE, Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="uuid" type="STRING" readOnly="true">
                <DESC>The Unique Unit IDentifier for the terminal.</DESC>
                <APPLIES msiOnly="true"></APPLIES>
                <PLATFORM>WM, CE, Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="applicationIconBadge" type="INTEGER"  productException="eb">
                <DESC>Set the application icon to have this badge number. Set to 0 (zero) to remove badge.</DESC>
                <PLATFORM>iOS</PLATFORM>
            </PROPERTY>
            <PROPERTY name="httpProxyURI" type="STRING">
                <DESC>Set HTTP proxy parameters for using by Network module. Example: user:password@url:port . Support only basic authentication. Setting the property overrides http_proxy_uri (or http_proxy_host, http_proxy_port, http_proxy_user, http_proxy_password). To set proxy for WebKit for Windows Mobile/CE use config.xml settings.</DESC>
                <PLATFORM>Android, iOS, WM, Win32</PLATFORM>
                <PLATFORM_EB>WM, Win32, Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="lockWindowSize" type="BOOLEAN" default="false">
                <DESC>Lock / unlock the window size change by the user. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <PLATFORM>Win32</PLATFORM>
            </PROPERTY>
            <PROPERTY name="keyboardState" type="STRING" default="See Description">
                <DESC>For Windows Mobile and Windows CE the keyboard can be manually shown or hidden as required. All other platforms only support 'automatic'. The default state for Windows Mobile and Windows CE is manual, for all other platforms it is automatic.</DESC>
                <PLATFORM>WM</PLATFORM>
                <APPLIES msiOnly="true"></APPLIES>
                <VALUES>
                    <VALUE constName="KEYBOARD_SHOWN" value ="shown">
                        <DESC>Shows the on screen keyboard, after setting the keyboard to shown or hidden it will no longer appear / disappear automatically until you set this property to automatic.</DESC>
                    </VALUE>
                    <VALUE constName="KEYBOARD_HIDDEN" value ="hidden">
                        <DESC>Hides the on screen keyboard, after setting the keyboard to shown or hidden it will no longer appear / disappear automatically until you set this property to automatic. This is most useful if your device has a hardware keyboard or you are scanning / capturing data to an input field.</DESC>
                    </VALUE>
                    <VALUE constName="KEYBOARD_AUTOMATIC" value ="automatic">
                        <DESC>Automatically shows or hides the keyboard as needed by the application.</DESC>
                    </VALUE>
                </VALUES>
            </PROPERTY>
            <PROPERTY name="localServerPort" type="INTEGER" default="8080" readOnly="true">
                <DESC>Port of the local (embedded) HTTP server. This parameter is mainly for debug purposes. If not specified, the platform will detect a free port on the device and use that one.</DESC>
            </PROPERTY>
            <PROPERTY name="freeServerPort" type="INTEGER" readOnly="true">
                <DESC>Get free local server port, available for binding.</DESC>
            </PROPERTY>
            <PROPERTY name="screenAutoRotate" type="BOOLEAN" default="true">
                <DESC>Screen auto rotate.</DESC>
                <PLATFORM>Android, iOS</PLATFORM>
                <PLATFORM_EB>Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="hasTouchscreen" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if the device has touch screen capabilities.  For Win32 desktop builds this API will return whether mouse support is available.</DESC>
            </PROPERTY>
            <PROPERTY name="webviewFramework" type="STRING" readOnly="true">
                <DESC>Browser framework identity string.</DESC>
            </PROPERTY>
            <PROPERTY name="screenSleeping" type="BOOLEAN">
                <DESC>If true, then screen will go to sleep by system inactivity timeout. If false then screen never go to sleep while application is in foreground.</DESC>
                <PLATFORM>Android, iOS</PLATFORM>
                <PLATFORM_EB>WM, Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="hasNetwork" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Use Network.hasNetwork to tell if the device is connected to the network.</DESC>
            </PROPERTY>
            <PROPERTY name="hasWifiNetwork" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Use Network.hasWifiNetwork to tell if the device is connected to the wifi network.</DESC>
            </PROPERTY>
            <PROPERTY name="hasCellNetwork" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Use Network.hasCellNetwork to tell if device is connected to the cell network.</DESC>
            </PROPERTY>
            <PROPERTY name="hasSqlite" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Returns true if the device has sqlite capabilities (previously only BlackBerry did not support this).</DESC>
            </PROPERTY>
        </PROPERTIES>
        <METHODS  access="STATIC">
            <ALIASES>
                <ALIAS new="get_property" existing="getProperty" deprecated="true">
                    <DESC>Use property names methods instead.</DESC>
                </ALIAS>

                <ALIAS new="run_app" existing="runApplication" deprecated="true"/>
                <ALIAS new="app_install" existing="applicationInstall" deprecated="true"/>
                <ALIAS new="app_installed?" existing="isApplicationInstalled" deprecated="true"/>
                <ALIAS new="app_uninstall" existing="applicationUninstall" deprecated="true"/>
                <ALIAS new="set_do_not_bakup_attribute" existing="setDoNotBackupAttribute" deprecated="true"/>

            </ALIASES>
            <METHOD name="applicationInstall">
                <DESC>Install an application.</DESC>
              <PLATFORM>iOS, WM, Win32, Android</PLATFORM>
              <PLATFORM_EB>WM, Win32, Android</PLATFORM_EB>
                <PARAMS>
                    <PARAM name="applicationUrl" type="STRING">
                        <DESC>The url of an application to install on the device.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="isApplicationInstalled">
                <DESC>Checks if the specified applicationName is installed on the device.</DESC>
                <PLATFORM>iOS, WM, Win32, Android</PLATFORM>
                <PLATFORM_EB>WM, Win32, Android</PLATFORM_EB>
                <PARAMS>
                    <PARAM name="applicationName" type="STRING">
                        <DESC>The name of the application.</DESC>
                    </PARAM>
                </PARAMS>
                <RETURN type="BOOLEAN"/>
            </METHOD>

            <METHOD name="applicationUninstall">
                <DESC>Uninstall the application. Not Supported on Windows CE devices.</DESC>
                <PLATFORM>WM, Win32, Android</PLATFORM>
                <PARAMS>
                    <PARAM name="applicationName" type="STRING">
                        <DESC>The name of the application.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="getStartParams">
                <DESC>Return the command line parameters. At Android start parameters are returned as URL query string starting with '?', name-value delimiter '=' and name value pairs delimiter '&#038;'.</DESC>
                <CALLBACK type="STRING"/>
                <PLATFORM>WM, CE, Win32, Android</PLATFORM>
            </METHOD>

            <METHOD name="openUrl">
                <DESC>Open the application associated with the URL. Behavior may be different on different platforms and depend on installed software. For example, open URL with http:// prefix will execute the Web Browser installed on system and open URL in executed browser. Note: For opening pdf files on android devices it is necessary to add option "no_compression: [ pdf ]" to android section in build.yml
                </DESC>
                <DESC_EB>Open the application associated with the URL. Behavior may be different on different platforms and depend on installed software. For example, open URL with http:// prefix will execute the Web Browser installed on system and open URL in executed browser. Note: Opening pdf files on Android devices is not supported.
                </DESC_EB>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL as string.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="unzipFile" callbackType="optional">
                <DESC>Unzip file.</DESC>
                <PARAMS>
                    <PARAM name="localPathToZip" type="STRING">
                        <DESC>The path to the file to be unzipped. Application should have write permissions to this folder.</DESC>
                    </PARAM>
                    <PARAM name="password" type="STRING">
                        <DESC>Password for the zip.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>

                    <PARAM name="outputFileName" type="STRING">
                        <DESC>Output file name. Used when decompressing gzip streams.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>

                </PARAMS>
            </METHOD>

            <METHOD name="zipFile">
                <DESC>Zip one file. Zip archive must placed to the folder where application can write files. </DESC>
                <PARAMS>
                    <PARAM name="localPathToZip" type="STRING">
                        <DESC>The path to the specified zip. Application should have write permissions to this folder.</DESC>
                    </PARAM>
                    <PARAM name="localPathToFile" type="STRING">
                        <DESC>The path to the file to be zipped.</DESC>
                    </PARAM>
                    <PARAM name="password" type="STRING">
                        <DESC>Password for the zip.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="zipFiles">
                <DESC>Zip list of files.</DESC>
                <PARAMS>
                    <PARAM name="localPathToZip" type="STRING">
                        <DESC>The path to the specified zip.</DESC>
                    </PARAM>
                    <PARAM name="basePath" type="STRING">
                        <DESC>Base path to the files to be zipped.</DESC>
                    </PARAM>
                    <PARAM name="filePathsToZip" type="ARRAY">
                        <DESC>List of file paths to be zipped.</DESC>
                    </PARAM>
                    <PARAM name="password" type="STRING">
                        <DESC>Password for the zip.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setRegistrySetting">
                <DESC>Set a value in the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <DESC_EB>Set a value in the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. </DESC_EB>
                <PLATFORM>WM</PLATFORM>
                <PARAMS>
                    <PARAM name="propertyMap" type="HASH" propertyHash="true">
                        <DESC>Map of properties associated with the registry key being set.</DESC>
                        <PARAMS>
                            <PARAM name="hive" type="STRING">
                                <DESC>The hive name.</DESC>
                                <VALUES>
                                    <VALUE constName="REGKEY_CLASSES_ROOT" value ="HKCR">
                                        <DESC>Set the property in the HKEY_CLASSES_ROOT hive.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGKEY_CURRENT_USER" value ="HKCU">
                                        <DESC>Set the property in the HKEY_CURRENT_USER hive.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGKEY_LOCAL_MACHINE" value ="HKLM">
                                        <DESC>Set the property in the HKEY_LOCAL_MACHINE hive.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGKEY_USERS" value ="HKU">
                                        <DESC>Set the property in the HKEY_USERS hive.</DESC>
                                    </VALUE>
                                </VALUES>
                            </PARAM>
                            <PARAM name="type" type="STRING">
                                <DESC>The type.</DESC>
                                <VALUES>
                                    <VALUE constName="REGTYPE_SZ" value ="String">
                                        <DESC>The type of the value being set is a string.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGTYPE_BINARY" value ="Binary">
                                        <DESC>The type of the value being set is a binary number.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGTYPE_DWORD" value ="DWORD">
                                        <DESC>The type of the value being set is a natural number (DWORD)</DESC>
                                    </VALUE>
                                    <VALUE constName="REGTYPE_MULTI_SZ" value ="MultiSZ">
                                        <DESC>The type of the value being set is a multi line string. Separate your lines with \n (\\n in JavaScript)</DESC>
                                    </VALUE>
                                </VALUES>
                            </PARAM>
                            <PARAM name="key" type="STRING">
                                <DESC>Full path of the key, including '\' separators as required. Remember to use '\\' in JavaScript to specify backslash.</DESC>
                            </PARAM>
                            <PARAM name="setting" type="STRING">
                                <DESC>The name of the registry setting to be set.</DESC>
                            </PARAM>
                            <PARAM name="value" type="STRING">
                                <DESC>The registry value to be set.</DESC>
                            </PARAM>
                            <PARAM name="persistent" type="BOOLEAN">
                                <DESC>Whether or not to create a corresponding merge file, setting to true will cause your value to persist across a device clean boot. A .reg file is written to the \Application folder on the device to persist the setting.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
                <RETURN type="BOOLEAN">
                    <DESC>Whether or not the registry key was successfully set.</DESC>
                </RETURN>
            </METHOD>

            <METHOD name="getRegistrySetting">
                <DESC>Retrieve a value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <DESC_EB>Retrieve a value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. </DESC_EB>
                <PLATFORM>WM</PLATFORM>
                <PARAMS>
                    <PARAM name="propertyMap" type="HASH" propertyHash="true">
                        <DESC>Map of properties associated with the registry key being set.</DESC>
                        <PARAMS>
                            <PARAM name="hive" type="STRING">
                                <DESC>The hive name, see setRegistrySetting.</DESC>
                            </PARAM>
                            <PARAM name="key" type="STRING">
                                <DESC>Full path of the key, including '\' separators as required. Remember to use '\\' in JavaScript to specify backslash.</DESC>
                            </PARAM>
                            <PARAM name="setting" type="STRING">
                                <DESC>The name of the setting to be retrieved.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
                <RETURN type="STRING">
                    <DESC>Registry value of the key.</DESC>
                </RETURN>
            </METHOD>

            <METHOD name="deleteRegistrySetting">
                <DESC>Deletes the specified value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <DESC_EB>Deletes the specified value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. </DESC_EB>
                <PLATFORM>WM</PLATFORM>
                <PARAMS>
                    <PARAM name="propertyMap" type="HASH" propertyHash="true">
                        <DESC>Map of properties associated with the registry key being set.</DESC>
                        <PARAMS>
                            <PARAM name="hive" type="STRING">
                                <DESC>The hive name, setRegistrySetting.</DESC>
                            </PARAM>
                            <PARAM name="key" type="STRING">
                                <DESC>Full path of the key, including '\' separators as required. Remember to use '\\' in JavaScript to specify backslash.</DESC>
                            </PARAM>
                            <PARAM name="setting" type="STRING">
                                <DESC>The name of the setting to be deleted.</DESC>
                            </PARAM>
                            <PARAM name="persistent" type="BOOLEAN">
                                <DESC>If the registry value was set to be persistent, ie a corresponding .reg file was created in the \Application folder then setting true here will delete that .reg file.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
                <RETURN type="BOOLEAN">
                    <DESC>Whether or not the registry key was successfully deleted.</DESC>
                </RETURN>
            </METHOD>

            <METHOD name="setWindowFrame">
                <DESC>Change application window position and size.</DESC>
                <PLATFORM>Win32</PLATFORM>
                <PARAMS>
                    <PARAM name="x" type="INTEGER">
                        <DESC>Left corner of window.</DESC>
                    </PARAM>
                    <PARAM name="y" type="INTEGER">
                        <DESC>Top corner of window.</DESC>
                    </PARAM>
                    <PARAM name="width" type="INTEGER">
                        <DESC>Width of window.</DESC>
                    </PARAM>
                    <PARAM name="height" type="INTEGER">
                        <DESC>Height of window.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setWindowPosition">
                <DESC>Change application window position.</DESC>
                <PLATFORM>Win32</PLATFORM>
                <PARAMS>
                    <PARAM name="x" type="INTEGER">
                        <DESC>Left corner of window.</DESC>
                    </PARAM>
                    <PARAM name="y" type="INTEGER">
                        <DESC>Top corner of window.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setWindowSize">
                <DESC>Change application window size.</DESC>
                <PLATFORM>Win32</PLATFORM>
                <PARAMS>
                    <PARAM name="width" type="INTEGER">
                        <DESC>Width of the window.</DESC>
                    </PARAM>
                    <PARAM name="height" type="INTEGER">
                        <DESC>Width of the of window.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="bringToFront" deprecated="true">
                <DESC>Bring application window to the top of the screen.</DESC>
                <PLATFORM>WM</PLATFORM>
            </METHOD>

            <METHOD name="replaceCurrentBundle"  deprecated="true" generateDoc="false">
                <DESC>Replace application bundle.</DESC>
                <PARAMS>
                    <PARAM name="pathToBundle" type="STRING">
                        <DESC>Local path to bundle folder. See Build Application/Upgrade Application section to find out how to build bundle on computer.</DESC>
                    </PARAM>
                    <PARAM name="params" type="HASH">
                        <DESC>Update parameters.</DESC>
                        <PARAMS>
                            <PARAM name="do_not_restart_app" type="BOOLEAN">
                                <DESC>If true, when Application will not be automatically restarted after the replace bundle is finished.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="deleteFolder" deprecated="true">
                <DESC>Delete folder.</DESC>
                <PARAMS>
                    <PARAM name="pathToFolder" type="STRING">
                        <DESC>Path to folder.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setDoNotBackupAttribute" productException="eb">
                <DESC>Set do not backup attribute for file.</DESC>
                <PLATFORM>iOS</PLATFORM>
                <PARAMS>
                    <PARAM name="pathToFile" type="STRING">
                        <DESC>Path to file.</DESC>
                    </PARAM>
                    <PARAM name="doNotBackup" type="BOOLEAN">
                        <DESC>True set doNotBackup attribute to file (exclude this file from backup), false for remove doNotBackup attribute from file.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="isBlobAttr" deprecated="true">
                <DESC>Use Database.SQLite3.isBlobAttr: is model attribute is blob.</DESC>
                <PARAMS>
                    <PARAM name="partition" type="STRING"/>
                    <PARAM name="sourceID" type="INTEGER"/>
                    <PARAM name="attrName" type="STRING"/>
                </PARAMS>
                <RETURN type="BOOLEAN"/>
            </METHOD>

            <METHOD name="updateBlobAttribs" deprecated="true">
                <DESC>Use Database.updateBlobAttribs: update model blob attributes list.</DESC>
                <PARAMS>
                    <PARAM name="partition" type="STRING"/>
                    <PARAM name="sourceID" type="INTEGER"/>
                </PARAMS>
            </METHOD>

            <METHOD name="get_locale" deprecated="true">
                <DESC>Use System.locale property: Current device locale.</DESC>
                <RETURN type="STRING"/>
            </METHOD>

            <METHOD name="set_locale" deprecated="true" generateAPI="false" access="STATIC">
                <DESC>Use Application.setLocale method: set application specific locale.</DESC>
                <PARAMS>
                    <PARAM name="locale_code" type="STRING"/>
                    <PARAM name="country_code" type="STRING"/>
                </PARAMS>
            </METHOD>

            <METHOD name="setPushNotification" deprecated="true">
                <DESC>Use Push.setPushNotification: Register push callback, the method to call upon receiving a push message.</DESC>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method. If empty, unregisters rhoconnect-push.</DESC>
                    </PARAM>
                    <PARAM name="url_params" type="STRING">
                        <DESC>Parameters which will be added to callback URL.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                    <PARAM name="push_client" type="STRING">
                        <DESC>Name of a push service client. Current values can be 'rhoconnect_push' or 'gcm' or 'legacy' or empty.</DESC>
                        <CAN_BE_NIL>
                            <DESC>The call will be applied to every push client.</DESC>
                        </CAN_BE_NIL>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setScreenRotationNotification" deprecated="true">
                <DESC>Use ScreenOrientation.setScreenOrientationEvent: Notify (call a callback method) when the screen rotates.</DESC>
                <PLATFORM>iOS, Android, WM</PLATFORM>
                <PLATFORM_EB>WM, Android</PLATFORM_EB>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method. If empty, unregisters notification callback.</DESC>
                    </PARAM>
                    <PARAM name="url_params" type="STRING">
                        <DESC>Parameters which will be added to callback URL.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="exit" deprecated="true">
                <DESC>Use Application.quit: exit application.</DESC>
            </METHOD>
            <METHOD name="set_sleeping" deprecated="true">
                <DESC>Use System.screenSleeping property: enable / disable phone sleeping.</DESC>
                <PARAMS>
                    <PARAM name="enable" type="BOOLEAN"/>
                </PARAMS>
            </METHOD>
            <METHOD name="startTimer" deprecated="true">
                <DESC>Start timer. (It's works only with Ruby)</DESC>
                <PARAMS>
                    <PARAM name="interval" type="INTEGER">
                        <DESC>Timer interval.</DESC>
                    </PARAM>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method.</DESC>
                    </PARAM>
                    <PARAM name="url_params" type="STRING">
                        <DESC>Parameters which will be added to callback URL.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="stopTimer" deprecated="true">
                <DESC>Stop timer. (It's works only with Ruby)</DESC>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method which identify the timer to stop.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="setNetworkStatusNotify" deprecated="true">
                <DESC>Use Network.setStatusNotify: set network notification callback.</DESC>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>The url to the user-defined callback method.</DESC>
                    </PARAM>
                    <PARAM name="poll_interval" type="INTEGER"  productException="eb">
                        <DESC>IOS. The network status polling period for systems that can not notify network status change immediately. Default value is 20 seconds.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="clearNetworkStatusNotify" deprecated="true">
                <DESC>Use Network.clearStatusNotify: Clear network status callback.</DESC>
            </METHOD>
            <METHOD name="set_http_proxy_url" deprecated="true">
                <DESC>Use System.httpProxyURI property: To use client with the HTTP proxy.</DESC>
                <PARAMS><commit_msg>Add productException="eb" to the methods that noe are marked as only working in Ruby.<commit_after><?xml version = "1.0"?>
<?xml-stylesheet type="text/xsl" href="pb_help.xsl"?>
<API>
    <MODULE name="System" parent="Rho" generateUnderscoreRubyNames="true">
        <HELP_OVERVIEW>The System API is used to control and modify core aspects of the device such as the screen, OS and device capabilities.</HELP_OVERVIEW>
        <MORE_HELP>
## Enabling the API
This API is part of the `coreapi` extension that is included automatically.
    :::ruby
    extensions: ["coreapi"]

## JavaScript Usage
Be sure to review the [JavaScript API Usage](/guide/api_js) guide for important information about using this API in JavaScript.

## Ruby Usage
Be sure to review the [Ruby API Usage](/guide/api_ruby) guide for important information about using this API in Ruby.
        </MORE_HELP>
        <MORE_HELP_EB>
## Enabling the API
There are two methods of enabling the System API:

* Include all ebapi modules or
* Include only the API modules you need

For either of these methods, you'll need to include files from the `/Enterprise Browser/JavaScript Files/Enterprise Browser` directory on the computer that you installed the Enterprise Browser.

### Include all JS API modules
To include all JS APIs, you must copy the ebapi-modules.js file to a location accessible by your app's files and include the JavaScript file in your app. For instance, to include the modules file in your index.html, with the file in the same directory as your index.html, you would add the following line to the &lt;head&gt; section of your index.html:

    :::html
    &lt;script type="text/javascript" charset="utf-8" src="ebapi-modules.js"&gt;&lt;/script&gt;

> Note: that the pathing for this file is relative to the current page.

This will define the EB class within the page. Any page you need to use the modules will need to have the .js file included in this fashion.

### Include only the modules you need
To include single APIs, you must first include the `ebapi.js` in your HTML as well as the API file you want to use. For instance, to use the System API, I would add the following code to my HTML file(s), assuming the API files have been copied to the same directory as the HTML.

    :::html
    &lt;script type="text/javascript" charset="utf-8" src="ebapi.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" charset="utf-8" src="eb.system.js"&gt;&lt;/script&gt;

The ebapi.js file is necessary for all single API inclusions.
        </MORE_HELP_EB>
        <ALIASES>
            <ALIAS new="System" deprecated="true"/>
        </ALIASES>
        <TEMPLATES>
            <!-- <DEFAULT_INSTANCE/> -->
            <PROPERTY_BAG/> <!-- object has properties, produce getProps(), setProps() methods -->
        </TEMPLATES>
        <PROPERTIES usePropertyBag="PropertyBagViaAccessors" limitPropertyBag="true" access="STATIC">
            <DESC>The System API supports the following properties.</DESC>
            <ALIASES>
                <ALIAS new="http_proxy_url" existing="httpProxyURI" deprecated="true"/>
                <ALIAS new="deviceId" existing="devicePushId" deprecated="true"/>
                <ALIAS new="isMotorolaDevice" existing="isSymbolDevice" deprecated="true"/>
            </ALIASES>
            <PROPERTY name="main_window_closed" type="BOOLEAN" readOnly="true" generateDoc="false">
                <DESC>It is internal property for using in debugger (signal for main window close).</DESC>
            </PROPERTY>
            <PROPERTY name="platform" type="STRING" readOnly="true">
                <DESC>Platform where application is running.</DESC>
                <VALUES>
                    <VALUE constName="PLATFORM_WM_CE" value ="WINDOWS">
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_ANDROID" value ="ANDROID">
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_IOS" value ="APPLE" productException='eb'>
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_WP8" value ="WP8" productException='eb'>
                        <DESC></DESC>
                    </VALUE>
                    <VALUE constName="PLATFORM_WINDOWS_DESKTOP" value ="WINDOWS_DESKTOP">
                        <DESC></DESC>
                    </VALUE>
                </VALUES>
                <PLATFORM_EB>WM, CE, Win32, Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="hasCamera" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if there is a camera available on the device.</DESC>
            </PROPERTY>
            <PROPERTY name="screenWidth" type="INTEGER" readOnly="true">
                <DESC>Screen width in logical pixels (used for set coordinates).</DESC>
            </PROPERTY>
            <PROPERTY name="screenHeight" type="INTEGER" readOnly="true">
                <DESC>Screen height in logical pixels (used for set coordinates).</DESC>
            </PROPERTY>
            <PROPERTY name="realScreenWidth" type="INTEGER" readOnly="true">
                <DESC>Screen width in real pixels.</DESC>
            </PROPERTY>
            <PROPERTY name="realScreenHeight" type="INTEGER" readOnly="true">
                <DESC>Screen height in real pixels.</DESC>
            </PROPERTY>
            <PROPERTY name="screenOrientation" type="STRING" readOnly="true">
                <DESC>Current screen orientation.</DESC>
                <VALUES>
                    <VALUE constName="SCREEN_PORTRAIT" value ="portrait">
                        <DESC>The return value if the screen is in portrait mode.</DESC>
                    </VALUE>
                    <VALUE constName="SCREEN_LANDSCAPE" value ="landscape">
                        <DESC>The return value if the screen is in landscape mode.</DESC>
                    </VALUE>
                </VALUES>
            </PROPERTY>
            <PROPERTY name="ppiX" type="INTEGER" readOnly="true">
                <DESC>Horizontal PPI (Pixels Per Inch).</DESC>
            </PROPERTY>
            <PROPERTY name="ppiY" type="INTEGER" readOnly="true">
                <DESC>Vertical PPI (Pixels Per Inch).</DESC>
            </PROPERTY>

            <PROPERTY name="deviceOwnerEmail" type="STRING" readOnly="true">
                <DESC>Primary email of phone owner. To access this property 'pim' capability must be enabled in your build.yml.</DESC>
                <PLATFORM>Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="deviceOwnerName" type="STRING" readOnly="true">
                <DESC>Name(account name) of phone owner. To access this property 'pim' capability must be enabled in your build.yml.</DESC>
                <PLATFORM>Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="devicePushId" type="STRING" readOnly="true">
                <DESC>Push notifications device ID which may be used to receive push messages.To get this ID , Push service should be configured on the device. Please refer to Push documentation.</DESC>
            </PROPERTY>
            <PROPERTY name="phoneId" type="STRING" readOnly="true">
                <DESC>Hardware based ID. It depends on capabilities configured for an application and has to remain same even across application uninstall/install.</DESC>
                <PLATFORM>WM, CE, Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="deviceName" type="STRING" readOnly="true">
                <DESC>Name of device application running on. Examples: '9000' (BB), 'iPhone', 'dream' (Android).</DESC>
            </PROPERTY>
            <PROPERTY name="osVersion" type="STRING" readOnly="true">
                <DESC>Version OS of device. Examples:  '4.1' (Android).</DESC>
            </PROPERTY>
            <PROPERTY name="locale" type="STRING" readOnly="true">
                <DESC>Current device locale Like 'en', 'ru' etc.</DESC>
            </PROPERTY>
            <PROPERTY name="country" type="STRING" readOnly="true">
                <DESC>Current device country code.</DESC>
            </PROPERTY>
            <PROPERTY name="isEmulator" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if the application is running on a platform emulator.</DESC>
            </PROPERTY>
            <PROPERTY name="isRhoSimulator" type="BOOLEAN" readOnly="true" productException="eb">
                <DESC>Returns true if the application is running on RhoSimulator.</DESC>
            </PROPERTY>
            <PROPERTY name="hasCalendar" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if calendar support is available.</DESC>
            </PROPERTY>
            <PROPERTY name="isSymbolDevice" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if the device supports Symbol device capabilities. APIs will indicate if the property or method is available on Symbol devices only. You can use this property to help your application decide when to take advantage of advanced Symbol capabilities.</DESC>
            </PROPERTY>
            <PROPERTY name="oemInfo" type="STRING" readOnly="true">
                <DESC>The OEM Information string for the terminal.</DESC>
                <APPLIES msiOnly="true"></APPLIES>
                <PLATFORM>WM, CE, Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="uuid" type="STRING" readOnly="true">
                <DESC>The Unique Unit IDentifier for the terminal.</DESC>
                <APPLIES msiOnly="true"></APPLIES>
                <PLATFORM>WM, CE, Android</PLATFORM>
            </PROPERTY>
            <PROPERTY name="applicationIconBadge" type="INTEGER"  productException="eb">
                <DESC>Set the application icon to have this badge number. Set to 0 (zero) to remove badge.</DESC>
                <PLATFORM>iOS</PLATFORM>
            </PROPERTY>
            <PROPERTY name="httpProxyURI" type="STRING">
                <DESC>Set HTTP proxy parameters for using by Network module. Example: user:password@url:port . Support only basic authentication. Setting the property overrides http_proxy_uri (or http_proxy_host, http_proxy_port, http_proxy_user, http_proxy_password). To set proxy for WebKit for Windows Mobile/CE use config.xml settings.</DESC>
                <PLATFORM>Android, iOS, WM, Win32</PLATFORM>
                <PLATFORM_EB>WM, Win32, Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="lockWindowSize" type="BOOLEAN" default="false">
                <DESC>Lock / unlock the window size change by the user. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <PLATFORM>Win32</PLATFORM>
            </PROPERTY>
            <PROPERTY name="keyboardState" type="STRING" default="See Description">
                <DESC>For Windows Mobile and Windows CE the keyboard can be manually shown or hidden as required. All other platforms only support 'automatic'. The default state for Windows Mobile and Windows CE is manual, for all other platforms it is automatic.</DESC>
                <PLATFORM>WM</PLATFORM>
                <APPLIES msiOnly="true"></APPLIES>
                <VALUES>
                    <VALUE constName="KEYBOARD_SHOWN" value ="shown">
                        <DESC>Shows the on screen keyboard, after setting the keyboard to shown or hidden it will no longer appear / disappear automatically until you set this property to automatic.</DESC>
                    </VALUE>
                    <VALUE constName="KEYBOARD_HIDDEN" value ="hidden">
                        <DESC>Hides the on screen keyboard, after setting the keyboard to shown or hidden it will no longer appear / disappear automatically until you set this property to automatic. This is most useful if your device has a hardware keyboard or you are scanning / capturing data to an input field.</DESC>
                    </VALUE>
                    <VALUE constName="KEYBOARD_AUTOMATIC" value ="automatic">
                        <DESC>Automatically shows or hides the keyboard as needed by the application.</DESC>
                    </VALUE>
                </VALUES>
            </PROPERTY>
            <PROPERTY name="localServerPort" type="INTEGER" default="8080" readOnly="true">
                <DESC>Port of the local (embedded) HTTP server. This parameter is mainly for debug purposes. If not specified, the platform will detect a free port on the device and use that one.</DESC>
            </PROPERTY>
            <PROPERTY name="freeServerPort" type="INTEGER" readOnly="true">
                <DESC>Get free local server port, available for binding.</DESC>
            </PROPERTY>
            <PROPERTY name="screenAutoRotate" type="BOOLEAN" default="true">
                <DESC>Screen auto rotate.</DESC>
                <PLATFORM>Android, iOS</PLATFORM>
                <PLATFORM_EB>Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="hasTouchscreen" type="BOOLEAN" readOnly="true">
                <DESC>Returns true if the device has touch screen capabilities.  For Win32 desktop builds this API will return whether mouse support is available.</DESC>
            </PROPERTY>
            <PROPERTY name="webviewFramework" type="STRING" readOnly="true">
                <DESC>Browser framework identity string.</DESC>
            </PROPERTY>
            <PROPERTY name="screenSleeping" type="BOOLEAN">
                <DESC>If true, then screen will go to sleep by system inactivity timeout. If false then screen never go to sleep while application is in foreground.</DESC>
                <PLATFORM>Android, iOS</PLATFORM>
                <PLATFORM_EB>WM, Android</PLATFORM_EB>
            </PROPERTY>
            <PROPERTY name="hasNetwork" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Use Network.hasNetwork to tell if the device is connected to the network.</DESC>
            </PROPERTY>
            <PROPERTY name="hasWifiNetwork" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Use Network.hasWifiNetwork to tell if the device is connected to the wifi network.</DESC>
            </PROPERTY>
            <PROPERTY name="hasCellNetwork" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Use Network.hasCellNetwork to tell if device is connected to the cell network.</DESC>
            </PROPERTY>
            <PROPERTY name="hasSqlite" type="BOOLEAN" readOnly="true" deprecated="true">
                <DESC>Returns true if the device has sqlite capabilities (previously only BlackBerry did not support this).</DESC>
            </PROPERTY>
        </PROPERTIES>
        <METHODS  access="STATIC">
            <ALIASES>
                <ALIAS new="get_property" existing="getProperty" deprecated="true">
                    <DESC>Use property names methods instead.</DESC>
                </ALIAS>

                <ALIAS new="run_app" existing="runApplication" deprecated="true"/>
                <ALIAS new="app_install" existing="applicationInstall" deprecated="true"/>
                <ALIAS new="app_installed?" existing="isApplicationInstalled" deprecated="true"/>
                <ALIAS new="app_uninstall" existing="applicationUninstall" deprecated="true"/>
                <ALIAS new="set_do_not_bakup_attribute" existing="setDoNotBackupAttribute" deprecated="true"/>

            </ALIASES>
            <METHOD name="applicationInstall">
                <DESC>Install an application.</DESC>
              <PLATFORM>iOS, WM, Win32, Android</PLATFORM>
              <PLATFORM_EB>WM, Win32, Android</PLATFORM_EB>
                <PARAMS>
                    <PARAM name="applicationUrl" type="STRING">
                        <DESC>The url of an application to install on the device.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="isApplicationInstalled">
                <DESC>Checks if the specified applicationName is installed on the device.</DESC>
                <PLATFORM>iOS, WM, Win32, Android</PLATFORM>
                <PLATFORM_EB>WM, Win32, Android</PLATFORM_EB>
                <PARAMS>
                    <PARAM name="applicationName" type="STRING">
                        <DESC>The name of the application.</DESC>
                    </PARAM>
                </PARAMS>
                <RETURN type="BOOLEAN"/>
            </METHOD>

            <METHOD name="applicationUninstall">
                <DESC>Uninstall the application. Not Supported on Windows CE devices.</DESC>
                <PLATFORM>WM, Win32, Android</PLATFORM>
                <PARAMS>
                    <PARAM name="applicationName" type="STRING">
                        <DESC>The name of the application.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="getStartParams">
                <DESC>Return the command line parameters. At Android start parameters are returned as URL query string starting with '?', name-value delimiter '=' and name value pairs delimiter '&#038;'.</DESC>
                <CALLBACK type="STRING"/>
                <PLATFORM>WM, CE, Win32, Android</PLATFORM>
            </METHOD>

            <METHOD name="openUrl">
                <DESC>Open the application associated with the URL. Behavior may be different on different platforms and depend on installed software. For example, open URL with http:// prefix will execute the Web Browser installed on system and open URL in executed browser. Note: For opening pdf files on android devices it is necessary to add option "no_compression: [ pdf ]" to android section in build.yml
                </DESC>
                <DESC_EB>Open the application associated with the URL. Behavior may be different on different platforms and depend on installed software. For example, open URL with http:// prefix will execute the Web Browser installed on system and open URL in executed browser. Note: Opening pdf files on Android devices is not supported.
                </DESC_EB>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL as string.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="unzipFile" callbackType="optional">
                <DESC>Unzip file.</DESC>
                <PARAMS>
                    <PARAM name="localPathToZip" type="STRING">
                        <DESC>The path to the file to be unzipped. Application should have write permissions to this folder.</DESC>
                    </PARAM>
                    <PARAM name="password" type="STRING">
                        <DESC>Password for the zip.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>

                    <PARAM name="outputFileName" type="STRING">
                        <DESC>Output file name. Used when decompressing gzip streams.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>

                </PARAMS>
            </METHOD>

            <METHOD name="zipFile">
                <DESC>Zip one file. Zip archive must placed to the folder where application can write files. </DESC>
                <PARAMS>
                    <PARAM name="localPathToZip" type="STRING">
                        <DESC>The path to the specified zip. Application should have write permissions to this folder.</DESC>
                    </PARAM>
                    <PARAM name="localPathToFile" type="STRING">
                        <DESC>The path to the file to be zipped.</DESC>
                    </PARAM>
                    <PARAM name="password" type="STRING">
                        <DESC>Password for the zip.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="zipFiles">
                <DESC>Zip list of files.</DESC>
                <PARAMS>
                    <PARAM name="localPathToZip" type="STRING">
                        <DESC>The path to the specified zip.</DESC>
                    </PARAM>
                    <PARAM name="basePath" type="STRING">
                        <DESC>Base path to the files to be zipped.</DESC>
                    </PARAM>
                    <PARAM name="filePathsToZip" type="ARRAY">
                        <DESC>List of file paths to be zipped.</DESC>
                    </PARAM>
                    <PARAM name="password" type="STRING">
                        <DESC>Password for the zip.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setRegistrySetting">
                <DESC>Set a value in the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <DESC_EB>Set a value in the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. </DESC_EB>
                <PLATFORM>WM</PLATFORM>
                <PARAMS>
                    <PARAM name="propertyMap" type="HASH" propertyHash="true">
                        <DESC>Map of properties associated with the registry key being set.</DESC>
                        <PARAMS>
                            <PARAM name="hive" type="STRING">
                                <DESC>The hive name.</DESC>
                                <VALUES>
                                    <VALUE constName="REGKEY_CLASSES_ROOT" value ="HKCR">
                                        <DESC>Set the property in the HKEY_CLASSES_ROOT hive.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGKEY_CURRENT_USER" value ="HKCU">
                                        <DESC>Set the property in the HKEY_CURRENT_USER hive.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGKEY_LOCAL_MACHINE" value ="HKLM">
                                        <DESC>Set the property in the HKEY_LOCAL_MACHINE hive.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGKEY_USERS" value ="HKU">
                                        <DESC>Set the property in the HKEY_USERS hive.</DESC>
                                    </VALUE>
                                </VALUES>
                            </PARAM>
                            <PARAM name="type" type="STRING">
                                <DESC>The type.</DESC>
                                <VALUES>
                                    <VALUE constName="REGTYPE_SZ" value ="String">
                                        <DESC>The type of the value being set is a string.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGTYPE_BINARY" value ="Binary">
                                        <DESC>The type of the value being set is a binary number.</DESC>
                                    </VALUE>
                                    <VALUE constName="REGTYPE_DWORD" value ="DWORD">
                                        <DESC>The type of the value being set is a natural number (DWORD)</DESC>
                                    </VALUE>
                                    <VALUE constName="REGTYPE_MULTI_SZ" value ="MultiSZ">
                                        <DESC>The type of the value being set is a multi line string. Separate your lines with \n (\\n in JavaScript)</DESC>
                                    </VALUE>
                                </VALUES>
                            </PARAM>
                            <PARAM name="key" type="STRING">
                                <DESC>Full path of the key, including '\' separators as required. Remember to use '\\' in JavaScript to specify backslash.</DESC>
                            </PARAM>
                            <PARAM name="setting" type="STRING">
                                <DESC>The name of the registry setting to be set.</DESC>
                            </PARAM>
                            <PARAM name="value" type="STRING">
                                <DESC>The registry value to be set.</DESC>
                            </PARAM>
                            <PARAM name="persistent" type="BOOLEAN">
                                <DESC>Whether or not to create a corresponding merge file, setting to true will cause your value to persist across a device clean boot. A .reg file is written to the \Application folder on the device to persist the setting.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
                <RETURN type="BOOLEAN">
                    <DESC>Whether or not the registry key was successfully set.</DESC>
                </RETURN>
            </METHOD>

            <METHOD name="getRegistrySetting">
                <DESC>Retrieve a value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <DESC_EB>Retrieve a value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. </DESC_EB>
                <PLATFORM>WM</PLATFORM>
                <PARAMS>
                    <PARAM name="propertyMap" type="HASH" propertyHash="true">
                        <DESC>Map of properties associated with the registry key being set.</DESC>
                        <PARAMS>
                            <PARAM name="hive" type="STRING">
                                <DESC>The hive name, see setRegistrySetting.</DESC>
                            </PARAM>
                            <PARAM name="key" type="STRING">
                                <DESC>Full path of the key, including '\' separators as required. Remember to use '\\' in JavaScript to specify backslash.</DESC>
                            </PARAM>
                            <PARAM name="setting" type="STRING">
                                <DESC>The name of the setting to be retrieved.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
                <RETURN type="STRING">
                    <DESC>Registry value of the key.</DESC>
                </RETURN>
            </METHOD>

            <METHOD name="deleteRegistrySetting">
                <DESC>Deletes the specified value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. When running on RhoSimulator, this method is supported only for Windows OS.</DESC>
                <DESC_EB>Deletes the specified value from the device registry. Only applicable on Windows Mobile / Embedded Handheld and CE devices. </DESC_EB>
                <PLATFORM>WM</PLATFORM>
                <PARAMS>
                    <PARAM name="propertyMap" type="HASH" propertyHash="true">
                        <DESC>Map of properties associated with the registry key being set.</DESC>
                        <PARAMS>
                            <PARAM name="hive" type="STRING">
                                <DESC>The hive name, setRegistrySetting.</DESC>
                            </PARAM>
                            <PARAM name="key" type="STRING">
                                <DESC>Full path of the key, including '\' separators as required. Remember to use '\\' in JavaScript to specify backslash.</DESC>
                            </PARAM>
                            <PARAM name="setting" type="STRING">
                                <DESC>The name of the setting to be deleted.</DESC>
                            </PARAM>
                            <PARAM name="persistent" type="BOOLEAN">
                                <DESC>If the registry value was set to be persistent, ie a corresponding .reg file was created in the \Application folder then setting true here will delete that .reg file.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
                <RETURN type="BOOLEAN">
                    <DESC>Whether or not the registry key was successfully deleted.</DESC>
                </RETURN>
            </METHOD>

            <METHOD name="setWindowFrame">
                <DESC>Change application window position and size.</DESC>
                <PLATFORM>Win32</PLATFORM>
                <PARAMS>
                    <PARAM name="x" type="INTEGER">
                        <DESC>Left corner of window.</DESC>
                    </PARAM>
                    <PARAM name="y" type="INTEGER">
                        <DESC>Top corner of window.</DESC>
                    </PARAM>
                    <PARAM name="width" type="INTEGER">
                        <DESC>Width of window.</DESC>
                    </PARAM>
                    <PARAM name="height" type="INTEGER">
                        <DESC>Height of window.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setWindowPosition">
                <DESC>Change application window position.</DESC>
                <PLATFORM>Win32</PLATFORM>
                <PARAMS>
                    <PARAM name="x" type="INTEGER">
                        <DESC>Left corner of window.</DESC>
                    </PARAM>
                    <PARAM name="y" type="INTEGER">
                        <DESC>Top corner of window.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setWindowSize">
                <DESC>Change application window size.</DESC>
                <PLATFORM>Win32</PLATFORM>
                <PARAMS>
                    <PARAM name="width" type="INTEGER">
                        <DESC>Width of the window.</DESC>
                    </PARAM>
                    <PARAM name="height" type="INTEGER">
                        <DESC>Width of the of window.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="bringToFront" deprecated="true">
                <DESC>Bring application window to the top of the screen.</DESC>
                <PLATFORM>WM</PLATFORM>
            </METHOD>

            <METHOD name="replaceCurrentBundle"  deprecated="true" generateDoc="false">
                <DESC>Replace application bundle.</DESC>
                <PARAMS>
                    <PARAM name="pathToBundle" type="STRING">
                        <DESC>Local path to bundle folder. See Build Application/Upgrade Application section to find out how to build bundle on computer.</DESC>
                    </PARAM>
                    <PARAM name="params" type="HASH">
                        <DESC>Update parameters.</DESC>
                        <PARAMS>
                            <PARAM name="do_not_restart_app" type="BOOLEAN">
                                <DESC>If true, when Application will not be automatically restarted after the replace bundle is finished.</DESC>
                            </PARAM>
                        </PARAMS>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="deleteFolder" deprecated="true">
                <DESC>Delete folder.</DESC>
                <PARAMS>
                    <PARAM name="pathToFolder" type="STRING">
                        <DESC>Path to folder.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setDoNotBackupAttribute" productException="eb">
                <DESC>Set do not backup attribute for file.</DESC>
                <PLATFORM>iOS</PLATFORM>
                <PARAMS>
                    <PARAM name="pathToFile" type="STRING">
                        <DESC>Path to file.</DESC>
                    </PARAM>
                    <PARAM name="doNotBackup" type="BOOLEAN">
                        <DESC>True set doNotBackup attribute to file (exclude this file from backup), false for remove doNotBackup attribute from file.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="isBlobAttr" deprecated="true">
                <DESC>Use Database.SQLite3.isBlobAttr: is model attribute is blob.</DESC>
                <PARAMS>
                    <PARAM name="partition" type="STRING"/>
                    <PARAM name="sourceID" type="INTEGER"/>
                    <PARAM name="attrName" type="STRING"/>
                </PARAMS>
                <RETURN type="BOOLEAN"/>
            </METHOD>

            <METHOD name="updateBlobAttribs" deprecated="true">
                <DESC>Use Database.updateBlobAttribs: update model blob attributes list.</DESC>
                <PARAMS>
                    <PARAM name="partition" type="STRING"/>
                    <PARAM name="sourceID" type="INTEGER"/>
                </PARAMS>
            </METHOD>

            <METHOD name="get_locale" deprecated="true">
                <DESC>Use System.locale property: Current device locale.</DESC>
                <RETURN type="STRING"/>
            </METHOD>

            <METHOD name="set_locale" deprecated="true" generateAPI="false" access="STATIC">
                <DESC>Use Application.setLocale method: set application specific locale.</DESC>
                <PARAMS>
                    <PARAM name="locale_code" type="STRING"/>
                    <PARAM name="country_code" type="STRING"/>
                </PARAMS>
            </METHOD>

            <METHOD name="setPushNotification" deprecated="true">
                <DESC>Use Push.setPushNotification: Register push callback, the method to call upon receiving a push message.</DESC>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method. If empty, unregisters rhoconnect-push.</DESC>
                    </PARAM>
                    <PARAM name="url_params" type="STRING">
                        <DESC>Parameters which will be added to callback URL.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                    <PARAM name="push_client" type="STRING">
                        <DESC>Name of a push service client. Current values can be 'rhoconnect_push' or 'gcm' or 'legacy' or empty.</DESC>
                        <CAN_BE_NIL>
                            <DESC>The call will be applied to every push client.</DESC>
                        </CAN_BE_NIL>
                    </PARAM>
                </PARAMS>
            </METHOD>

            <METHOD name="setScreenRotationNotification" deprecated="true">
                <DESC>Use ScreenOrientation.setScreenOrientationEvent: Notify (call a callback method) when the screen rotates.</DESC>
                <PLATFORM>iOS, Android, WM</PLATFORM>
                <PLATFORM_EB>WM, Android</PLATFORM_EB>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method. If empty, unregisters notification callback.</DESC>
                    </PARAM>
                    <PARAM name="url_params" type="STRING">
                        <DESC>Parameters which will be added to callback URL.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="exit" deprecated="true">
                <DESC>Use Application.quit: exit application.</DESC>
            </METHOD>
            <METHOD name="set_sleeping" deprecated="true">
                <DESC>Use System.screenSleeping property: enable / disable phone sleeping.</DESC>
                <PARAMS>
                    <PARAM name="enable" type="BOOLEAN"/>
                </PARAMS>
            </METHOD>
            <METHOD name="startTimer" deprecated="true" productException="eb">
                <DESC>Start timer. (It's works only with Ruby)</DESC>
                <PARAMS>
                    <PARAM name="interval" type="INTEGER">
                        <DESC>Timer interval.</DESC>
                    </PARAM>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method.</DESC>
                    </PARAM>
                    <PARAM name="url_params" type="STRING">
                        <DESC>Parameters which will be added to callback URL.</DESC>
                        <CAN_BE_NIL/>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="stopTimer" deprecated="true" productException="eb">
                <DESC>Stop timer. (It's works only with Ruby)</DESC>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>URL of the callback method which identify the timer to stop.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="setNetworkStatusNotify" deprecated="true">
                <DESC>Use Network.setStatusNotify: set network notification callback.</DESC>
                <PARAMS>
                    <PARAM name="url" type="STRING">
                        <DESC>The url to the user-defined callback method.</DESC>
                    </PARAM>
                    <PARAM name="poll_interval" type="INTEGER"  productException="eb">
                        <DESC>IOS. The network status polling period for systems that can not notify network status change immediately. Default value is 20 seconds.</DESC>
                    </PARAM>
                </PARAMS>
            </METHOD>
            <METHOD name="clearNetworkStatusNotify" deprecated="true">
                <DESC>Use Network.clearStatusNotify: Clear network status callback.</DESC>
            </METHOD>
            <METHOD name="set_http_proxy_url" deprecated="true">
                <DESC>Use System.httpProxyURI property: To use client with the HTTP proxy.</DESC>
                <PARAMS>
{'fraction_non_alphanumeric': 0.098209865283894, 'fraction_numerical': 0.0013549782421763035, 'mean_word_length': 1.599485216920107, 'pattern_counts': {'":': 0, '<': 1577, '<?xml version=': 0, '>': 1579, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 48, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1541378', 'n_tokens_mistral': 18742, 'n_tokens_neox': 17739, 'n_words': 5864}