Skip to content

Commit 0534b87

Browse files
committed
fix: cleanup and optimisations
1 parent c71b940 commit 0534b87

File tree

6 files changed

+92
-145
lines changed

6 files changed

+92
-145
lines changed

src/webview/index.android.ts

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ function initializeWebViewClient(): void {
9696
public shouldOverrideUrlLoading(view: android.webkit.WebView, request: string | android.webkit.WebResourceRequest) {
9797
const owner = this.owner.get();
9898
if (!owner) {
99-
console.warn('WebViewExtClientImpl.shouldOverrideUrlLoading(...) - no owner');
100-
99+
if (Trace.isEnabled()) {
100+
Trace.write('WebViewExtClientImpl.shouldOverrideUrlLoading(...) - no owner', WebViewTraceCategory, Trace.messageType.warn);
101+
}
101102
return true;
102103
}
103104

@@ -147,8 +148,9 @@ function initializeWebViewClient(): void {
147148
public shouldInterceptRequest(view: android.webkit.WebView, request: string | android.webkit.WebResourceRequest) {
148149
const owner = this.owner.get();
149150
if (!owner) {
150-
console.warn('WebViewExtClientImpl.shouldInterceptRequest(...) - no owner');
151-
151+
if (Trace.isEnabled()) {
152+
Trace.write('WebViewExtClientImpl.shouldInterceptRequest() - no owner', WebViewTraceCategory, Trace.messageType.warn);
153+
}
152154
return super.shouldInterceptRequest(view, request as android.webkit.WebResourceRequest);
153155
}
154156

@@ -216,13 +218,14 @@ function initializeWebViewClient(): void {
216218
super.onPageStarted(view, url, favicon);
217219
const owner = this.owner.get();
218220
if (!owner) {
219-
console.warn(`WebViewExtClientImpl.onPageStarted("${view}", "${url}", "${favicon}") - no owner`);
220-
221+
if (Trace.isEnabled()) {
222+
Trace.write(`WebViewExtClientImpl.onPageStarted("${view}", "${url}", "${favicon}") - no owner`, WebViewTraceCategory, Trace.messageType.warn);
223+
}
221224
return;
222225
}
223226

224227
if (Trace.isEnabled()) {
225-
Trace.write(`WebViewClientClass.onPageStarted("${view}", "${url}", "${favicon}")`, WebViewTraceCategory, Trace.messageType.info);
228+
Trace.write(`WebViewClientClass.onPageStarted("${view}", "${url}", "${favicon}")`, WebViewTraceCategory, Trace.messageType.log);
226229
}
227230
owner._onLoadStarted(url);
228231
}
@@ -232,15 +235,16 @@ function initializeWebViewClient(): void {
232235

233236
const owner = this.owner.get();
234237
if (!owner) {
235-
console.warn(`WebViewExtClientImpl.onPageFinished("${view}", ${url}") - no owner`);
236-
238+
if (Trace.isEnabled()) {
239+
Trace.write(`WebViewExtClientImpl.onPageFinished("${view}", ${url}") - no owner`, WebViewTraceCategory, Trace.messageType.warn);
240+
}
237241
return;
238242
}
239243

240244
if (Trace.isEnabled()) {
241245
Trace.write(`WebViewClientClass.onPageFinished("${view}", ${url}")`, WebViewTraceCategory, Trace.messageType.info);
242246
}
243-
owner._onLoadFinished(url).catch(() => void 0);
247+
owner._onLoadFinished(url);
244248
}
245249

246250
public onReceivedError(...args: any[]) {
@@ -258,8 +262,9 @@ function initializeWebViewClient(): void {
258262

259263
const owner = this.owner.get();
260264
if (!owner) {
261-
console.warn('WebViewExtClientImpl.onReceivedErrorAPI23(...) - no owner');
262-
265+
if (Trace.isEnabled()) {
266+
Trace.write('WebViewExtClientImpl.onReceivedErrorAPI23(...) - no owner', WebViewTraceCategory, Trace.messageType.warn);
267+
}
263268
return;
264269
}
265270

@@ -272,23 +277,25 @@ function initializeWebViewClient(): void {
272277
Trace.write(`WebViewClientClass.onReceivedErrorAPI23(${error.getErrorCode()}, ${error.getDescription()}, ${url})`, WebViewTraceCategory, Trace.messageType.info);
273278
}
274279

275-
owner._onLoadFinished(url, `${error.getDescription()}(${error.getErrorCode()})`).catch(() => void 0);
280+
owner._onLoadFinished(url, `${error.getDescription()}(${error.getErrorCode()})`);
276281
}
277282

278283
private onReceivedErrorBeforeAPI23(view: android.webkit.WebView, errorCode: number, description: string, failingUrl: string) {
279284
super.onReceivedError(view, errorCode, description, failingUrl);
280285

281286
const owner = this.owner.get();
282287
if (!owner) {
283-
console.warn('WebViewExtClientImpl.onReceivedErrorBeforeAPI23(...) - no owner');
288+
if (Trace.isEnabled()) {
289+
Trace.write('WebViewExtClientImpl.onReceivedErrorBeforeAPI23(...) - no owner', WebViewTraceCategory, Trace.messageType.warn);
290+
}
284291

285292
return;
286293
}
287294

288295
if (Trace.isEnabled()) {
289296
Trace.write(`WebViewClientClass.onReceivedErrorBeforeAPI23(${errorCode}, "${description}", "${failingUrl}")`, WebViewTraceCategory, Trace.messageType.info);
290297
}
291-
owner._onLoadFinished(failingUrl, `${description}(${errorCode})`).catch(() => void 0);
298+
owner._onLoadFinished(failingUrl, `${description}(${errorCode})`);
292299
}
293300
}
294301

@@ -584,14 +591,14 @@ function initializeWebViewClient(): void {
584591
public emitEventToNativeScript(eventName: string, data: string) {
585592
const owner = this.owner.get();
586593
if (!owner) {
587-
console.warn(`WebViewExtClientImpl.emitEventToNativeScript("${eventName}") - no owner`);
594+
if (Trace.isEnabled()) {
595+
Trace.write(`WebViewExtClientImpl.emitEventToNativeScript("${eventName}") - no owner`, WebViewTraceCategory, Trace.messageType.warn);
596+
}
588597
return;
589598
}
590599

591600
try {
592-
owner.onWebViewEvent(eventName, JSON.parse(data));
593-
594-
return;
601+
return owner.onWebViewEvent(eventName, JSON.parse(data));
595602
} catch (err) {
596603
if (Trace.isEnabled()) {
597604
Trace.write(`WebViewExtClientImpl.emitEventToNativeScript("${eventName}") - couldn't parse data: ${data} err: ${err}`, WebViewTraceCategory, Trace.messageType.info);

src/webview/index.common.ts

Lines changed: 23 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -541,10 +541,6 @@ export abstract class WebViewExtBase extends ContainerView {
541541
* Callback for the loadFinished-event. Called from the native-webview
542542
*/
543543
public async _onLoadFinished(url: string, error?: string): Promise<LoadFinishedEventData> {
544-
if (Trace.isEnabled()) {
545-
Trace.write(`WebViewExt._onLoadFinished("${url}", ${error || void 0} ${this.autoInjectJSBridge}) - > Injecting webview-bridge JS code`, WebViewTraceCategory, Trace.messageType.info);
546-
}
547-
548544
if (!error) {
549545
// When this is called without an error, update with this.src value without loading the url.
550546
// This is needed to keep src up-to-date when linked are clicked inside the webview.
@@ -593,9 +589,7 @@ export abstract class WebViewExtBase extends ContainerView {
593589
this.notify(args);
594590

595591
if (this.hasListeners(WebViewExtBase.titleChangedEvent)) {
596-
this.getTitle()
597-
.then((title) => title && this._titleChanged(title))
598-
.catch(() => void 0);
592+
this.getTitle().then((title) => title && this._titleChanged(title));
599593
}
600594

601595
return args;
@@ -1041,7 +1035,7 @@ export abstract class WebViewExtBase extends ContainerView {
10411035
*/
10421036
public autoLoadJavaScriptFile(resourceName: string, filepath: string) {
10431037
if (this.src) {
1044-
this.loadJavaScriptFile(resourceName, filepath).catch(() => void 0);
1038+
this.loadJavaScriptFile(resourceName, filepath);
10451039
}
10461040

10471041
this.autoInjectScriptFiles.push({ resourceName, filepath });
@@ -1056,7 +1050,7 @@ export abstract class WebViewExtBase extends ContainerView {
10561050
*/
10571051
public autoLoadStyleSheetFile(resourceName: string, filepath: string, insertBefore?: boolean) {
10581052
if (this.src) {
1059-
this.loadStyleSheetFile(resourceName, filepath, insertBefore).catch(() => void 0);
1053+
this.loadStyleSheetFile(resourceName, filepath, insertBefore);
10601054
}
10611055

10621056
this.autoInjectStyleSheetFiles.push({
@@ -1072,7 +1066,7 @@ export abstract class WebViewExtBase extends ContainerView {
10721066

10731067
public autoExecuteJavaScript(scriptCode: string, name: string) {
10741068
if (this.src) {
1075-
this.executePromise(scriptCode).catch(() => void 0);
1069+
this.executePromise(scriptCode);
10761070
}
10771071

10781072
this.removeAutoExecuteJavaScript(name);
@@ -1185,59 +1179,40 @@ export abstract class WebViewExtBase extends ContainerView {
11851179
if (scriptCodes.length === 0) {
11861180
return;
11871181
}
1188-
1189-
const reqId = `${Math.round(Math.random() * 1000)}`;
1190-
const eventName = `tmp-promise-event-${reqId}`;
1191-
1192-
const scriptHeader = `
1193-
var promises = [];
1194-
var p = Promise.resolve();
1195-
`.trim();
1182+
if (Trace.isEnabled()) {
1183+
Trace.write(`WebViewExt.executePromises: ${scriptCodes}`, WebViewTraceCategory, Trace.messageType.info);
1184+
}
11961185

11971186
const scriptBody = [] as string[];
11981187

11991188
for (const scriptCode of scriptCodes) {
1200-
if (!scriptCode) {
1201-
continue;
1202-
}
1203-
12041189
if (typeof scriptCode !== 'string') {
12051190
if (Trace.isEnabled()) {
12061191
Trace.write('WebViewExt.executePromises() - scriptCode is not a string', WebViewTraceCategory, Trace.messageType.info);
12071192
}
12081193
continue;
12091194
}
1210-
12111195
// Wrapped in a Promise.then to delay executing scriptCode till the previous promise have finished
1212-
scriptBody.push(
1213-
`
1214-
p = p.then(function() {
1215-
return ${scriptCode.trim()};
1216-
});
1217-
1218-
promises.push(p);
1219-
`.trim()
1220-
);
1196+
scriptBody.push(`p = p.then(() => {${scriptCode.trim()}});promises.push(p);`);
12211197
}
12221198

1223-
const scriptFooter = `
1224-
return Promise.all(promises);
1225-
`.trim();
1226-
1227-
const scriptCode = `(function() {
1228-
${scriptHeader}
1199+
const scriptCode = `(() => {
1200+
var promises = [];
1201+
var p = Promise.resolve();
12291202
${scriptBody.join(';')}
1230-
${scriptFooter}
1203+
return Promise.all(promises);
12311204
})()`.trim();
12321205

1206+
const reqId = `${Math.round(Math.random() * 1000)}`;
1207+
const eventName = `tmp-promise-event-${reqId}`;
12331208
const promiseScriptCode = `
1234-
(function() {
1235-
var eventName = ${JSON.stringify(eventName)};
1209+
(() => {
1210+
var n = ${JSON.stringify(eventName)};
12361211
try {
1237-
var promise = (function() {return ${scriptCode}})();
1238-
window.nsWebViewBridge.executePromise(promise, eventName);
1212+
window.nsWebViewBridge.executePromise(${scriptCode}, n);
12391213
} catch (err) {
1240-
window.nsWebViewBridge.emitError(err, eventName);
1214+
console.error(err, err.stack);
1215+
window.nsWebViewBridge.emitError(err, n);
12411216
}
12421217
})();
12431218
`.trim();
@@ -1246,18 +1221,16 @@ export abstract class WebViewExtBase extends ContainerView {
12461221
let timer: any;
12471222
const tmpPromiseEvent = (args: any) => {
12481223
clearTimeout(timer);
1249-
12501224
const { data, err } = args.data || ({} as any);
12511225

12521226
// Was it a success? No 'err' received.
1253-
if (typeof err === 'undefined') {
1227+
if (!err) {
12541228
resolve(data);
1255-
12561229
return;
12571230
}
12581231

12591232
// Rejected promise.
1260-
if (err && typeof err === 'object') {
1233+
if (typeof err === 'object') {
12611234
// err is an object. Might be a serialized Error-object.
12621235
const error = new Error(err.message || err.name || err);
12631236
if (err.stack) {
@@ -1269,16 +1242,12 @@ export abstract class WebViewExtBase extends ContainerView {
12691242
if (key in error) {
12701243
continue;
12711244
}
1272-
12731245
error[key] = value;
12741246
}
1275-
12761247
reject(error);
1277-
1278-
return;
1248+
} else {
1249+
reject(new Error(err));
12791250
}
1280-
1281-
reject(new Error(err));
12821251
};
12831252

12841253
this.once(eventName, tmpPromiseEvent);
@@ -1287,7 +1256,6 @@ export abstract class WebViewExtBase extends ContainerView {
12871256
if (timeout > 0) {
12881257
timer = setTimeout(() => {
12891258
reject(new Error(`Timed out after: ${timeout}`));
1290-
12911259
this.off(eventName);
12921260
}, timeout);
12931261
}

src/webview/index.ios.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,7 @@ export class WKNavigationDelegateNotaImpl extends NSObject implements WKNavigati
719719
if (webView.URL) {
720720
src = webView.URL.absoluteString;
721721
}
722-
owner._onLoadFinished(src).catch(() => void 0);
722+
owner._onLoadFinished(src);
723723
}
724724

725725
public webViewDidFailNavigationWithError(webView: WKWebView, navigation: WKNavigation, error: NSError): void {
@@ -735,7 +735,7 @@ export class WKNavigationDelegateNotaImpl extends NSObject implements WKNavigati
735735
if (Trace.isEnabled()) {
736736
Trace.write(`WKNavigationDelegateClass.webViewDidFailNavigationWithError("${error.localizedDescription}")`, WebViewTraceCategory, Trace.messageType.info);
737737
}
738-
owner._onLoadFinished(src, error.localizedDescription).catch(() => void 0);
738+
owner._onLoadFinished(src, error.localizedDescription);
739739
}
740740

741741
public webViewDidFailProvisionalNavigationWithError(webView: WKWebView, navigation: WKNavigation, error: NSError): void {
@@ -752,7 +752,7 @@ export class WKNavigationDelegateNotaImpl extends NSObject implements WKNavigati
752752
if (Trace.isEnabled()) {
753753
Trace.write(`WKNavigationDelegateClass.webViewDidFailProvisionalNavigationWithError(${error.localizedDescription}`, WebViewTraceCategory, Trace.messageType.info);
754754
}
755-
owner._onLoadFinished(src, error.localizedDescription).catch(() => void 0);
755+
owner._onLoadFinished(src, error.localizedDescription);
756756
}
757757
}
758758

0 commit comments

Comments
 (0)