mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-24 14:58:36 +08:00
rename webview to engine
This commit is contained in:
73
ionic/engine/engine.js
Normal file
73
ionic/engine/engine.js
Normal file
@ -0,0 +1,73 @@
|
||||
import * as util from 'ionic/util';
|
||||
|
||||
|
||||
let registry = {};
|
||||
let defaultEngine;
|
||||
let activeEngine;
|
||||
|
||||
class EngineController {
|
||||
|
||||
constructor() {
|
||||
let self = this;
|
||||
let proxyMethods = 'ready fullScreen showStatusBar exitApp'.split(' ');
|
||||
for (let x = 0; x < proxyMethods.length; x++) {
|
||||
this[proxyMethods[x]] = function() {
|
||||
return self.proxy(proxyMethods[x], arguments);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proxy(target, args) {
|
||||
let eng = this.get()
|
||||
if (eng && eng[target]) {
|
||||
return eng[target].apply(this, args);
|
||||
}
|
||||
return new Promise(resolve => {}, reject => {
|
||||
reject();
|
||||
});
|
||||
}
|
||||
|
||||
is(name) {
|
||||
return this.name === name;
|
||||
}
|
||||
|
||||
getName() {
|
||||
return this.get().name;
|
||||
}
|
||||
|
||||
get() {
|
||||
if (util.isUndefined(activeEngine)) {
|
||||
this.set(this.detect());
|
||||
}
|
||||
return activeEngine || defaultEngine;
|
||||
}
|
||||
|
||||
set(eng) {
|
||||
activeEngine = eng;
|
||||
}
|
||||
|
||||
setDefault(eng) {
|
||||
defaultEngine = eng;
|
||||
}
|
||||
|
||||
register(eng) {
|
||||
registry[eng.name] = eng;
|
||||
}
|
||||
|
||||
detect() {
|
||||
for (let name in registry) {
|
||||
if (registry[name].isMatch()) {
|
||||
return registry[name];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export let engine = new EngineController();
|
||||
|
||||
engine.setDefault({
|
||||
name: 'default',
|
||||
ready: util.dom.windowLoad
|
||||
});
|
Reference in New Issue
Block a user