--- /dev/null
+describe("Ext.Support", function() {
+ describe("Ext.is", function() {
+
+ var platform = {
+ detect: function(navigatorObject) {
+ var result = [];
+
+ Ext.is.init(navigatorObject);
+
+ if (Ext.is.Desktop) {
+ result.push('Desktop');
+ }
+ if (Ext.is.Tablet) {
+ result.push('Tablet');
+ }
+ if (Ext.is.Phone) {
+ result.push('Phone');
+ }
+
+ if (Ext.is.iPad) {
+ result.push('iPad');
+ }
+ if (Ext.is.iPhone) {
+ result.push('iPhone');
+ }
+ if (Ext.is.iPod) {
+ result.push('iPod');
+ }
+
+ if (Ext.is.Mac) {
+ result.push('Mac');
+ }
+ if (Ext.is.Windows) {
+ result.push('Windows');
+ }
+ if (Ext.is.Linux) {
+ result.push('Linux');
+ }
+ if (Ext.is.Android) {
+ result.push('Android');
+ }
+ if (Ext.is.iOS) {
+ result.push('iOS');
+ }
+ if (Ext.is.Blackberry) {
+ result.push('BlackBerry');
+ }
+
+ // Reset back to use actual navigator host object
+ Ext.is.init(window.navigator);
+
+ return result.join(' ');
+ },
+
+ data: {
+ 'Desktop Mac': {
+ Safari_502_Mac: {
+ platform: 'MacIntel',
+ userAgent: 'Safari_5533.18.5Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
+ },
+
+ Chrome_70517_Mac: {
+ platform: 'MacIntel',
+ userAgent: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7'
+ },
+
+ Opera_1063_Mac: {
+ platform: 'MacIntel',
+ userAgent: 'Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.6.30 Version/10.63'
+ }
+ },
+ 'Desktop Windows': {
+ IE_9Beta_Win7: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; Media Center PC 6.0)'
+ },
+
+ IE_8_Win7: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; .NET CLR 3.5.30729)'
+ },
+
+ IE_7_WinVista: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)'
+ },
+
+ IE_61_WinXP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)'
+ },
+
+ Firefox_36_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'
+ },
+
+ Firefox_35_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.15) Gecko/20101026 Firefox/3.5.15'
+ },
+
+ Firefox_3_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19'
+ },
+
+ Opera_1054_XP: {
+ platform: 'Win32',
+ userAgent: 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.24 Version/10.54'
+ },
+
+ Opera_964_XP: {
+ platform: 'Win32',
+ userAgent: 'Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1'
+ },
+
+ Safari_5_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4'
+ },
+
+ Safari_4_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29'
+ },
+
+ Safari_3_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29'
+ },
+
+ Chrome_8_Win7: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10'
+ },
+
+ Chrome_7_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7'
+ },
+
+ Chrome_6_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2'
+ },
+
+ Chrome_5_XP: {
+ platform: 'Win32',
+ userAgent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4'
+ }
+ },
+ 'Tablet iPad iOS': {
+ iPad_32: {
+ platform: 'iPad',
+ userAgent: 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
+ }
+ },
+ 'Phone iPhone iOS': {
+ iPhone_31: {
+ platform: 'iPhone',
+ userAgent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16'
+ }
+ },
+ 'Phone iPod iOS': {
+ iPod_41: {
+ platform: 'iPod',
+ userAgent: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B118 Safari/6531.22.7'
+ },
+
+ iPod_31: {
+ platform: 'iPod',
+ userAgent: 'Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16'
+ }
+ },
+ 'Phone Linux Android': {
+ Android_22_G2: {
+ platform: 'Linux armv7l',
+ userAgent: ' Mozilla/5.0 (Linux; U; Android 2.2; en-us; T-Mobile G2 Build/ FRF91) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+ },
+
+ Android_22_Desire: {
+ platform: 'Linux armv7l',
+ userAgent: 'Mozilla/5.0 (Linux; U; Android 2.2; en-vn; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+ },
+
+ Android_22_NexusOne: {
+ platform: 'Linux armv7l',
+ userAgent: 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/ FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
+ },
+
+ Android_21_GalaxyS: {
+ platform: 'Linux armv7l',
+ userAgent: 'Mozilla/5.0 (Linux; U; Android 2.1-update1; fr-fr; GT-I9000 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'
+ },
+
+ Android_21_Evo: {
+ platform: 'Linux armv7l',
+ userAgent: 'Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Sprint APA9292KT Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko)'
+ }
+ },
+ 'Phone BlackBerry': {
+ BlackBerry_Torch: {
+ platform: 'BlackBerry',
+ userAgent: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.246 Mobile Safari/534.1+'
+ }
+ }
+ }
+ },
+ generateSpecsFor = function(type) {
+ for (var data in platform.data[type]) {
+ if (platform.data.hasOwnProperty(type)) {
+ it("should detect " + data + " as " + type, function() {
+ expect(platform.detect(platform.data[type][data])).toEqual(type);
+ });
+ }
+ }
+ };
+
+ generateSpecsFor('Desktop Mac');
+ generateSpecsFor('Desktop Windows');
+ generateSpecsFor('Tablet iPad iOS');
+ generateSpecsFor('Phone iPhone iOS');
+ generateSpecsFor('Phone iPod iOS');
+ generateSpecsFor('Phone Linux Android');
+ generateSpecsFor('Phone BlackBerry');
+ });
+
+ describe("Ext.supports", function() {
+
+ describe("OrientationChange", function() {
+ it("should return true when supported", function() {
+ expect(Ext.supports.OrientationChange).toBe((typeof window.orientation != 'undefined') && ('onorientationchange' in window));
+ });
+ });
+
+ describe("DeviceMotion", function() {
+ it("should return true when supported", function() {
+ expect(Ext.supports.DeviceMotion).toBe('ondevicemotion' in window);
+ });
+ });
+
+ describe("Touch", function() {
+ it("should return true when supported", function() {
+ expect(Ext.supports.Touch).toBe(('ontouchstart' in window) && (!Ext.is.Desktop));
+ });
+ });
+
+ });
+});