From 87fee8d024e311ec3d0a23a073d96c8a928c0924 Mon Sep 17 00:00:00 2001 From: muji Date: Thu, 24 May 2018 10:11:03 +0800 Subject: [PATCH 1/2] Suppress Safari promise rejections. Currently Webkit implements createImageBitmap() but returns a promise rejection. Note that once Webkit implements createImageBitmap() correctly these changes should be removed. --- src/shared/atlas/CharAtlasGenerator.ts | 4 ++-- src/shared/utils/Browser.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/shared/atlas/CharAtlasGenerator.ts b/src/shared/atlas/CharAtlasGenerator.ts index 276da78d..e0cfbcf7 100644 --- a/src/shared/atlas/CharAtlasGenerator.ts +++ b/src/shared/atlas/CharAtlasGenerator.ts @@ -6,7 +6,7 @@ import { FontWeight } from 'xterm'; import { CHAR_ATLAS_CELL_SPACING, ICharAtlasConfig } from './Types'; import { IColor } from '../Types'; -import { isFirefox } from '../utils/Browser'; +import { isFirefox, isSafari } from '../utils/Browser'; declare const Promise: any; @@ -99,7 +99,7 @@ export function generateStaticCharAtlasTexture(context: Window, canvasFactory: ( // if support is lacking as drawImage works there too. Firefox is also // included here as ImageBitmap appears both buggy and has horrible // performance (tested on v55). - if (!('createImageBitmap' in context) || isFirefox) { + if (!('createImageBitmap' in context) || isFirefox || isSafari) { // Don't attempt to clear background colors if createImageBitmap is not supported if (canvas instanceof HTMLCanvasElement) { // Just return the HTMLCanvas if it's a HTMLCanvasElement diff --git a/src/shared/utils/Browser.ts b/src/shared/utils/Browser.ts index be71d875..ce30429e 100644 --- a/src/shared/utils/Browser.ts +++ b/src/shared/utils/Browser.ts @@ -8,6 +8,7 @@ const userAgent = (isNode) ? 'node' : navigator.userAgent; const platform = (isNode) ? 'node' : navigator.platform; export const isFirefox = !!~userAgent.indexOf('Firefox'); +export const isSafari = !!~userAgent.indexOf('Safari'); export const isMSIE = !!~userAgent.indexOf('MSIE') || !!~userAgent.indexOf('Trident'); // Find the users platform. We use this to interpret the meta key From 3ae96a226667b813ba0e571eedd2d4d9541aa4bb Mon Sep 17 00:00:00 2001 From: muji Date: Thu, 24 May 2018 10:18:27 +0800 Subject: [PATCH 2/2] Improve isSafari test. --- src/shared/utils/Browser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/utils/Browser.ts b/src/shared/utils/Browser.ts index ce30429e..a023031c 100644 --- a/src/shared/utils/Browser.ts +++ b/src/shared/utils/Browser.ts @@ -8,7 +8,7 @@ const userAgent = (isNode) ? 'node' : navigator.userAgent; const platform = (isNode) ? 'node' : navigator.platform; export const isFirefox = !!~userAgent.indexOf('Firefox'); -export const isSafari = !!~userAgent.indexOf('Safari'); +export const isSafari = /^((?!chrome|android).)*safari/i.test(userAgent); export const isMSIE = !!~userAgent.indexOf('MSIE') || !!~userAgent.indexOf('Trident'); // Find the users platform. We use this to interpret the meta key