mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-22 05:21:52 +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) {
|
while (platformNode) {
|
||||||
platformNode.initialize(this);
|
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
|
// set the array of active platforms with
|
||||||
// the last one in the array the most important
|
// the last one in the array the most important
|
||||||
this._platforms.push(platformNode.name);
|
this._platforms.push(platformNode.name);
|
||||||
|
@ -363,6 +363,37 @@ describe('Platform', () => {
|
|||||||
expect(plt.is('tablet')).toEqual(true);
|
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', () => {
|
it('should set core platform for osx desktop firefox', () => {
|
||||||
plt.setQueryParams('');
|
plt.setQueryParams('');
|
||||||
plt.setDefault('core');
|
plt.setDefault('core');
|
||||||
|
Reference in New Issue
Block a user