@nota/nativescript-webview-ext
Version:
Extended WebView for NativeScript which adds 'x-local' scheme for local-files. events between WebView and native-layer, javascript execution, injecting CSS and JS-files.
115 lines • 17.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var webview_ext_common_1 = require("./webview-ext-common");
var WKNavigationDelegateImpl = (function (_super) {
__extends(WKNavigationDelegateImpl, _super);
function WKNavigationDelegateImpl() {
return _super !== null && _super.apply(this, arguments) || this;
}
WKNavigationDelegateImpl.initWithOwner = function (owner) {
var handler = WKNavigationDelegateImpl.new();
handler._owner = owner;
return handler;
};
WKNavigationDelegateImpl.prototype.webViewDecidePolicyForNavigationActionDecisionHandler = function (webView, navigationAction, decisionHandler) {
var owner = this._owner.get();
if (!owner) {
decisionHandler(1);
return;
}
var url = navigationAction.request.URL && navigationAction.request.URL.absoluteString;
owner.writeTrace("webViewDecidePolicyForNavigationActionDecisionHandler: " + url);
if (url) {
var urlOverrideHandlerFn = owner.urlOverrideHandler;
if (urlOverrideHandlerFn && urlOverrideHandlerFn(url) === true) {
decisionHandler(0);
return;
}
var navType = "other";
switch (navigationAction.navigationType) {
case 0:
navType = "linkClicked";
break;
case 1:
navType = "formSubmitted";
break;
case 2:
navType = "backForward";
break;
case 3:
navType = "reload";
break;
case 4:
navType = "formResubmitted";
break;
}
decisionHandler(1);
if (webview_ext_common_1.traceEnabled()) {
webview_ext_common_1.traceWrite("WKNavigationDelegateClass.webViewDecidePolicyForNavigationActionDecisionHandler(" + navigationAction.request.URL.absoluteString + ", " + navigationAction.navigationType + ")", webview_ext_common_1.traceCategories.Debug);
}
owner._onLoadStarted(navigationAction.request.URL.absoluteString, navType);
}
};
WKNavigationDelegateImpl.prototype.webViewDidStartProvisionalNavigation = function (webView, navigation) {
if (webview_ext_common_1.traceEnabled()) {
webview_ext_common_1.traceWrite("WKNavigationDelegateClass.webViewDidStartProvisionalNavigation(" + webView.URL + ")", webview_ext_common_1.traceCategories.Debug);
}
};
WKNavigationDelegateImpl.prototype.webViewDidFinishNavigation = function (webView, navigation) {
if (webview_ext_common_1.traceEnabled()) {
webview_ext_common_1.traceWrite("WKNavigationDelegateClass.webViewDidFinishNavigation(" + webView.URL + ")", webview_ext_common_1.traceCategories.Debug);
}
var owner = this._owner.get();
if (owner) {
var src = owner.src;
if (webView.URL) {
src = webView.URL.absoluteString;
}
owner._onLoadFinished(src);
}
};
WKNavigationDelegateImpl.prototype.webViewDidFailNavigationWithError = function (webView, navigation, error) {
var owner = this._owner.get();
if (owner) {
var src = owner.src;
if (webView.URL) {
src = webView.URL.absoluteString;
}
if (webview_ext_common_1.traceEnabled()) {
webview_ext_common_1.traceWrite("WKNavigationDelegateClass.webViewDidFailNavigationWithError(" + error.localizedDescription + ")", webview_ext_common_1.traceCategories.Debug);
}
owner._onLoadFinished(src, error.localizedDescription);
}
};
WKNavigationDelegateImpl.ObjCProtocols = [WKNavigationDelegate];
return WKNavigationDelegateImpl;
}(NSObject));
exports.WKNavigationDelegateImpl = WKNavigationDelegateImpl;
var WKScriptMessageHandlerImpl = (function (_super) {
__extends(WKScriptMessageHandlerImpl, _super);
function WKScriptMessageHandlerImpl() {
return _super !== null && _super.apply(this, arguments) || this;
}
WKScriptMessageHandlerImpl.initWithOwner = function (owner) {
var delegate = WKScriptMessageHandlerImpl.new();
delegate._owner = owner;
return delegate;
};
WKScriptMessageHandlerImpl.prototype.userContentControllerDidReceiveScriptMessage = function (userContentController, webViewMessage) {
var owner = this._owner.get();
if (!owner) {
return;
}
try {
var message = JSON.parse(webViewMessage.body);
owner.onWebViewEvent(message.eventName, message.data);
}
catch (err) {
owner.writeTrace("userContentControllerDidReceiveScriptMessage(" + userContentController + ", " + webViewMessage + ") - bad message: " + webViewMessage.body, webview_ext_common_1.traceMessageType.error);
}
};
WKScriptMessageHandlerImpl.ObjCProtocols = [WKScriptMessageHandler];
return WKScriptMessageHandlerImpl;
}(NSObject));
exports.WKScriptMessageHandlerImpl = WKScriptMessageHandlerImpl;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vidmlldy1leHQud2t3ZWJ2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2Vidmlldy1leHQud2t3ZWJ2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsMkRBQW1JO0FBRW5JO0lBQThDLDRDQUFRO0lBQXREOztJQXVGQSxDQUFDO0lBckZpQixzQ0FBYSxHQUEzQixVQUE0QixLQUE4QjtRQUN0RCxJQUFNLE9BQU8sR0FBNkIsd0JBQXdCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekUsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBR00sd0ZBQXFELEdBQTVELFVBQTZELE9BQWtCLEVBQUUsZ0JBQW9DLEVBQUUsZUFBb0I7UUFDdkksSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVoQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDVCxlQUFlLEdBQWdDLENBQUM7WUFDaEQsTUFBTSxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDeEYsS0FBSyxDQUFDLFVBQVUsQ0FBQyw0REFBMEQsR0FBSyxDQUFDLENBQUM7UUFDbEYsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNOLElBQUksb0JBQW9CLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3BELEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixJQUFJLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzdELGVBQWUsR0FBaUMsQ0FBQztnQkFDakQsTUFBTSxDQUFDO1lBQ1gsQ0FBQztZQUVELElBQUksT0FB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Q0FBZ0QsUUFBUSxHQXdCdkQ7QUF4QlksZ0VBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vbm9kZV9tb2R1bGVzL3Rucy1wbGF0Zm9ybS1kZWNsYXJhdGlvbnMvaW9zLmQudHNcIiAvPlxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vcGxhdGZvcm1zL2lvcy9Ob3RhV2ViVmlld0V4dC5kLnRzXCIgLz5cblxuaW1wb3J0IHsgTmF2aWdhdGlvblR5cGUsIHRyYWNlQ2F0ZWdvcmllcywgdHJhY2VFbmFibGVkLCB0cmFjZU1lc3NhZ2VUeXBlLCB0cmFjZVdyaXRlLCBXZWJWaWV3RXh0QmFzZSB9IGZyb20gXCIuL3dlYnZpZXctZXh0LWNvbW1vblwiO1xuXG5leHBvcnQgY2xhc3MgV0tOYXZpZ2F0aW9uRGVsZWdhdGVJbXBsIGV4dGVuZHMgTlNPYmplY3QgaW1wbGVtZW50cyBXS05hdmlnYXRpb25EZWxlZ2F0ZSB7XG4gICAgcHVibGljIHN0YXRpYyBPYmpDUHJvdG9jb2xzID0gW1dLTmF2aWdhdGlvbkRlbGVnYXRlXTtcbiAgICBwdWJsaWMgc3RhdGljIGluaXRXaXRoT3duZXIob3duZXI6IFdlYWtSZWY8V2ViVmlld0V4dEJhc2U+KTogV0tOYXZpZ2F0aW9uRGVsZWdhdGVJbXBsIHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IDxXS05hdmlnYXRpb25EZWxlZ2F0ZUltcGw+V0tOYXZpZ2F0aW9uRGVsZWdhdGVJbXBsLm5ldygpO1xuICAgICAgICBoYW5kbGVyLl9vd25lciA9IG93bmVyO1xuICAgICAgICByZXR1cm4gaGFuZGxlcjtcbiAgICB9XG4gICAgcHJpdmF0ZSBfb3duZXI6IFdlYWtSZWY8V2ViVmlld0V4dEJhc2U+O1xuXG4gICAgcHVibGljIHdlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyKHdlYlZpZXc6IFdLV2ViVmlldywgbmF2aWdhdGlvbkFjdGlvbjogV0tOYXZpZ2F0aW9uQWN0aW9uLCBkZWNpc2lvbkhhbmRsZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvd25lciA9IHRoaXMuX293bmVyLmdldCgpO1xuXG4gICAgICAgIGlmICghb3duZXIpIHtcbiAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kuQWxsb3cpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCAmJiBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nO1xuICAgICAgICBvd25lci53cml0ZVRyYWNlKGB3ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcjogJHt1cmx9YCk7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgIGxldCB1cmxPdmVycmlkZUhhbmRsZXJGbiA9IG93bmVyLnVybE92ZXJyaWRlSGFuZGxlcjtcbiAgICAgICAgICAgIGlmICh1cmxPdmVycmlkZUhhbmRsZXJGbiAmJiB1cmxPdmVycmlkZUhhbmRsZXJGbih1cmwpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeS5DYW5jZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG5hdlR5cGU6IE5hdmlnYXRpb25UeXBlID0gXCJvdGhlclwiO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKG5hdmlnYXRpb25BY3Rpb24ubmF2aWdhdGlvblR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblR5cGUuTGlua0FjdGl2YXRlZDpcbiAgICAgICAgICAgICAgICAgICAgbmF2VHlwZSA9IFwibGlua0NsaWNrZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25UeXBlLkZvcm1TdWJtaXR0ZWQ6XG4gICAgICAgICAgICAgICAgICAgIG5hdlR5cGUgPSBcImZvcm1TdWJtaXR0ZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25UeXBlLkJhY2tGb3J3YXJkOlxuICAgICAgICAgICAgICAgICAgICBuYXZUeXBlID0gXCJiYWNrRm9yd2FyZFwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblR5cGUuUmVsb2FkOlxuICAgICAgICAgICAgICAgICAgICBuYXZUeXBlID0gXCJyZWxvYWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25UeXBlLkZvcm1SZXN1Ym1pdHRlZDpcbiAgICAgICAgICAgICAgICAgICAgbmF2VHlwZSA9IFwiZm9ybVJlc3VibWl0dGVkXCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeS5BbGxvdyk7XG5cbiAgICAgICAgICAgIGlmICh0cmFjZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIHRyYWNlV3JpdGUoXCJXS05hdmlnYXRpb25EZWxlZ2F0ZUNsYXNzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyKFwiICsgbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyArIFwiLCBcIiArIG5hdmlnYXRpb25BY3Rpb24ubmF2aWdhdGlvblR5cGUgKyBcIilcIiwgdHJhY2VDYXRlZ29yaWVzLkRlYnVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG93bmVyLl9vbkxvYWRTdGFydGVkKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIG5hdlR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbih3ZWJWaWV3OiBXS1dlYlZpZXcsIG5hdmlnYXRpb246IFdLTmF2aWdhdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodHJhY2VFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRyYWNlV3JpdGUoXCJXS05hdmlnYXRpb25EZWxlZ2F0ZUNsYXNzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihcIiArIHdlYlZpZXcuVVJMICsgXCIpXCIsIHRyYWNlQ2F0ZWdvcmllcy5EZWJ1Zyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb24od2ViVmlldzogV0tXZWJWaWV3LCBuYXZpZ2F0aW9uOiBXS05hdmlnYXRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRyYWNlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0cmFjZVdyaXRlKFwiV0tOYXZpZ2F0aW9uRGVsZWdhdGVDbGFzcy53ZWJWaWV3RGlkRmluaXNoTmF2aWdhdGlvbihcIiArIHdlYlZpZXcuVVJMICsgXCIpXCIsIHRyYWNlQ2F0ZWdvcmllcy5EZWJ1Zyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3duZXIgPSB0aGlzLl9vd25lci5nZXQoKTtcbiAgICAgICAgaWYgKG93bmVyKSB7XG4gICAgICAgICAgICBsZXQgc3JjID0gb3duZXIuc3JjO1xuICAgICAgICAgICAgaWYgKHdlYlZpZXcuVVJMKSB7XG4gICAgICAgICAgICAgICAgc3JjID0gd2ViVmlldy5VUkwuYWJzb2x1dGVTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvd25lci5fb25Mb2FkRmluaXNoZWQoc3JjKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3ZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3Iod2ViVmlldzogV0tXZWJWaWV3LCBuYXZpZ2F0aW9uOiBXS05hdmlnYXRpb24sIGVycm9yOiBOU0Vycm9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG93bmVyID0gdGhpcy5fb3duZXIuZ2V0KCk7XG4gICAgICAgIGlmIChvd25lcikge1xuICAgICAgICAgICAgbGV0IHNyYyA9IG93bmVyLnNyYztcbiAgICAgICAgICAgIGlmICh3ZWJWaWV3LlVSTCkge1xuICAgICAgICAgICAgICAgIHNyYyA9IHdlYlZpZXcuVVJMLmFic29sdXRlU3RyaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRyYWNlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgdHJhY2VXcml0ZShcIldLTmF2aWdhdGlvbkRlbGVnYXRlQ2xhc3Mud2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFwiICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24gKyBcIilcIiwgdHJhY2VDYXRlZ29yaWVzLkRlYnVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG93bmVyLl9vbkxvYWRGaW5pc2hlZChzcmMsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXJJbXBsIGV4dGVuZHMgTlNPYmplY3QgaW1wbGVtZW50cyBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIE9iakNQcm90b2NvbHMgPSBbV0tTY3JpcHRNZXNzYWdlSGFuZGxlcl07XG5cbiAgICBwcml2YXRlIF9vd25lcjogV2Vha1JlZjxXZWJWaWV3RXh0QmFzZT47XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXRXaXRoT3duZXIob3duZXI6IFdlYWtSZWY8V2ViVmlld0V4dEJhc2U+KTogV0tTY3JpcHRNZXNzYWdlSGFuZGxlckltcGwge1xuICAgICAgICBsZXQgZGVsZWdhdGUgPSA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlckltcGw+V0tTY3JpcHRNZXNzYWdlSGFuZGxlckltcGwubmV3KCk7XG4gICAgICAgIGRlbGVnYXRlLl9vd25lciA9IG93bmVyO1xuICAgICAgICByZXR1cm4gZGVsZWdhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHVzZXJDb250ZW50Q29udHJvbGxlckRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlKHVzZXJDb250ZW50Q29udHJvbGxlcjogV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIHdlYlZpZXdNZXNzYWdlOiBXS1NjcmlwdE1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3Qgb3duZXIgPSB0aGlzLl9vd25lci5nZXQoKTtcbiAgICAgICAgaWYgKCFvd25lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKHdlYlZpZXdNZXNzYWdlLmJvZHkgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIG93bmVyLm9uV2ViVmlld0V2ZW50KG1lc3NhZ2UuZXZlbnROYW1lLCBtZXNzYWdlLmRhdGEpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIG93bmVyLndyaXRlVHJhY2UoYHVzZXJDb250ZW50Q29udHJvbGxlckRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlKCR7dXNlckNvbnRlbnRDb250cm9sbGVyfSwgJHt3ZWJWaWV3TWVzc2FnZX0pIC0gYmFkIG1lc3NhZ2U6ICR7d2ViVmlld01lc3NhZ2UuYm9keX1gLCB0cmFjZU1lc3NhZ2VUeXBlLmVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=