mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
feat(platform): add electron as a platform (#10868)
* feat(platform): add the handler electron platform ready * + Added UA test * (fix)platform: add core superset to electron definition
This commit is contained in:

committed by
Justin Willis

parent
e423e082b6
commit
c0df862398
@ -1,7 +1,7 @@
|
||||
import { OpaqueToken } from '@angular/core';
|
||||
|
||||
import { Platform, PlatformConfig } from './platform';
|
||||
import { isCordova, isIos, isIosUIWebView } from './platform-utils';
|
||||
import { isCordova, isElectron, isIos, isIosUIWebView } from './platform-utils';
|
||||
|
||||
|
||||
export const PLATFORM_CONFIGS: { [key: string]: PlatformConfig } = {
|
||||
@ -219,6 +219,24 @@ export const PLATFORM_CONFIGS: { [key: string]: PlatformConfig } = {
|
||||
isMatch(plt: Platform): boolean {
|
||||
return isCordova(plt);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* electron
|
||||
*/
|
||||
'electron': {
|
||||
superset: 'core',
|
||||
initialize: function(plt: Platform) {
|
||||
plt.prepareReady = function() {
|
||||
// 1) ionic bootstrapped
|
||||
plt.windowLoad(function() {
|
||||
plt.triggerReady('electron');
|
||||
});
|
||||
};
|
||||
},
|
||||
isMatch(plt: Platform): boolean {
|
||||
return isElectron(plt);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -6,6 +6,10 @@ export function isCordova(plt: Platform): boolean {
|
||||
return !!(win['cordova'] || win['PhoneGap'] || win['phonegap']);
|
||||
}
|
||||
|
||||
export function isElectron(plt: Platform): boolean {
|
||||
return plt.testUserAgent('Electron');
|
||||
}
|
||||
|
||||
export function isIos(plt: Platform): boolean {
|
||||
// shortcut function to be reused internally
|
||||
// checks navigator.platform to see if it's an actual iOS device
|
||||
|
@ -444,6 +444,22 @@ describe('Platform', () => {
|
||||
expect(plt.is('tablet')).toEqual(true);
|
||||
});
|
||||
|
||||
it('should set electron via user agent', () => {
|
||||
plt.setQueryParams('');
|
||||
plt.setDefault('core');
|
||||
plt.setUserAgent(OSX_10_ELECTRON_1_4_15_UA);
|
||||
plt.init();
|
||||
|
||||
expect(plt.is('core')).toEqual(false);
|
||||
expect(plt.is('mobile')).toEqual(false);
|
||||
expect(plt.is('windows')).toEqual(false);
|
||||
expect(plt.is('android')).toEqual(false);
|
||||
expect(plt.is('ios')).toEqual(false);
|
||||
expect(plt.is('ipad')).toEqual(false);
|
||||
expect(plt.is('tablet')).toEqual(false);
|
||||
expect(plt.is('electron')).toEqual(true);
|
||||
})
|
||||
|
||||
it('should set core platform for osx desktop firefox', () => {
|
||||
plt.setQueryParams('');
|
||||
plt.setDefault('core');
|
||||
@ -549,6 +565,7 @@ describe('Platform', () => {
|
||||
const OSX_10_FIREFOX_43_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0';
|
||||
const OSX_10_SAFARI_9_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4';
|
||||
const OSX_10_CHROME_49_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36';
|
||||
const OSX_10_ELECTRON_1_4_15_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) ionic-hello-world/1.4.15 Chrome/53.0.2785.143 Electron/1.4.15 Safari/537.36';
|
||||
|
||||
const WINDOWS_10_CHROME_40_UA = 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36';
|
||||
const WINDOWS_10_EDGE_12_UA = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
|
||||
@ -564,4 +581,4 @@ const ANDROID_7_1_1_UA = 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26
|
||||
const IPHONE_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4';
|
||||
const IPHONE_10_2_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89 (140564782665216)';
|
||||
const IPAD_UA = 'Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53';
|
||||
const IPAD_10_2_UA = 'Mozilla/5.0 (iPad; CPU OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89 (140342232906320)';
|
||||
const IPAD_10_2_UA = 'Mozilla/5.0 (iPad; CPU OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89 (140342232906320)';
|
Reference in New Issue
Block a user