refactor(web/engine): intro of text.EngineDeviceSpec

fix(web):  missed change
This commit is contained in:
jahorton 2020-03-26 12:04:39 +07:00
parent 534222fea5
commit 03481e017d
2 changed files with 81 additions and 0 deletions

View file

@ -1,6 +1,7 @@
// Includes version-related functionality
///<reference path="utils/version.ts"/>
///<reference path="utils/styleConstants.ts" />
///<reference path="text/engineDeviceSpec.ts" />
// The Device object definition -------------------------------------------------
@ -249,5 +250,9 @@ namespace com.keyman {
return this._styles;
}
public get headlessSpec(): text.EngineDeviceSpec {
return new text.EngineDeviceSpec(this.browser, this.formFactor, this.OS, this.touchable);
}
}
}

View file

@ -0,0 +1,76 @@
namespace com.keyman.text {
export enum Browser {
Chrome = 'chrome',
Edge = 'edge',
Firefox = 'firefox',
Native = 'native', // Used by embedded mode
Opera = 'opera',
Safari = 'safari',
Other = 'other'
}
export enum OperatingSystem {
Windows = 'Windows',
macOS = 'MacOSX',
Linux = 'Linux',
Android = 'Android',
iOS = 'iOS',
Other = 'other'
}
export enum FormFactor {
Desktop = 'desktop',
Phone = 'phone',
Tablet = 'tablet'
}
/**
* This class provides an abstract version of com.keyman.Device that is headless-friendly,
* containing only the information needed by web-core for text processing use.
*/
export class EngineDeviceSpec {
readonly browser: Browser;
readonly formFactor: FormFactor;
readonly OS: OperatingSystem;
readonly touchable: boolean;
constructor(browser: string, formFactor: string, OS: string, touchable: boolean) {
switch(browser as Browser) {
case Browser.Chrome:
case Browser.Edge:
case Browser.Firefox:
case Browser.Native:
case Browser.Opera:
case Browser.Safari:
this.browser = browser as Browser;
break;
default:
this.browser = Browser.Other;
}
switch(formFactor.toLowerCase()) {
case FormFactor.Desktop:
case FormFactor.Phone:
case FormFactor.Tablet:
this.formFactor = formFactor as FormFactor;
break;
default:
throw ("Invalid form factor specified for device!");
}
switch(OS.toLowerCase()) {
case OperatingSystem.Windows.toLowerCase():
case OperatingSystem.macOS.toLowerCase():
case OperatingSystem.Linux.toLowerCase():
case OperatingSystem.Android.toLowerCase():
case OperatingSystem.iOS.toLowerCase():
this.OS = OS as OperatingSystem;
break;
default:
this.OS = OperatingSystem.Other;
}
this.touchable = touchable;
}
}
}