mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
fix(platform): detect iPad Pro correctly (#10292)
* fix(platform): iPad pro is detected as an iPad * chore(platform): ipad should be last
This commit is contained in:

committed by
Brandy Carney

parent
7f304edcf9
commit
f12fc61211
@ -986,6 +986,16 @@ export class Platform {
|
||||
while (platformNode) {
|
||||
platformNode.initialize(this);
|
||||
|
||||
// extra check for ipad pro issue
|
||||
// https://forums.developer.apple.com/thread/25948
|
||||
if (platformNode.name === 'iphone' && this.navigatorPlatform() === 'iPad') {
|
||||
// this is an ipad pro so push ipad and tablet to platforms
|
||||
// and then return as we are done
|
||||
this._platforms.push('tablet');
|
||||
this._platforms.push('ipad');
|
||||
return;
|
||||
}
|
||||
|
||||
// set the array of active platforms with
|
||||
// the last one in the array the most important
|
||||
this._platforms.push(platformNode.name);
|
||||
|
@ -363,6 +363,37 @@ describe('Platform', () => {
|
||||
expect(plt.is('tablet')).toEqual(true);
|
||||
});
|
||||
|
||||
// for https://forums.developer.apple.com/thread/25948
|
||||
it('should set ipad when user agent is iphone but navigator.platform is iPad', () => {
|
||||
plt.setQueryParams('');
|
||||
plt.setUserAgent(IPHONE_UA);
|
||||
plt.setNavigatorPlatform('iPad');
|
||||
plt.init();
|
||||
|
||||
expect(plt.is('core')).toEqual(false);
|
||||
expect(plt.is('mobile')).toEqual(true);
|
||||
expect(plt.is('windows')).toEqual(false);
|
||||
expect(plt.is('android')).toEqual(false);
|
||||
expect(plt.is('ios')).toEqual(true);
|
||||
expect(plt.is('ipad')).toEqual(true);
|
||||
expect(plt.is('iphone')).toEqual(false);
|
||||
expect(plt.is('tablet')).toEqual(true);
|
||||
|
||||
plt.setQueryParams('');
|
||||
plt.setUserAgent(IPHONE_10_2_UA);
|
||||
plt.setNavigatorPlatform('iPad');
|
||||
plt.init();
|
||||
|
||||
expect(plt.is('core')).toEqual(false);
|
||||
expect(plt.is('mobile')).toEqual(true);
|
||||
expect(plt.is('windows')).toEqual(false);
|
||||
expect(plt.is('android')).toEqual(false);
|
||||
expect(plt.is('ios')).toEqual(true);
|
||||
expect(plt.is('ipad')).toEqual(true);
|
||||
expect(plt.is('iphone')).toEqual(false);
|
||||
expect(plt.is('tablet')).toEqual(true);
|
||||
});
|
||||
|
||||
it('should set core platform for osx desktop firefox', () => {
|
||||
plt.setQueryParams('');
|
||||
plt.setDefault('core');
|
||||
|
Reference in New Issue
Block a user