From: surya.kumar7 Date: Wed, 15 May 2019 17:09:09 +0000 (+0530) Subject: Refactor termination sequence X-Git-Tag: submit/tizen/20190521.092823~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=64527f72f0990d9a5f3b7bc6bd4dc4355b27046f;p=platform%2Fframework%2Fweb%2Fwrtjs.git Refactor termination sequence 1. Termination logic has been altered to navigate toward one sink for different termination requests 2. UI/Watch app loop cycle is destroyed before electron app's quit is called Linked to: https://review.tizen.org/gerrit/205432 Change-Id: I471cf5896e7045a395ebe4a85fcb97962444721b Signed-off-by: surya.kumar7 --- diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index cafec8f8..33596bab 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -37,6 +37,7 @@ class Runtime { }); app.on('before-quit', function(event) { console.log('before-quit'); + wrt.exit(); }); app.on('will-quit', function(event) { console.log('will-quit'); @@ -45,7 +46,6 @@ class Runtime { }); app.on('quit', function(event) { console.log('quit'); - wrt.exit(); }); app.on('browser-window-blur', function() { console.log('browser-window-blur'); @@ -65,7 +65,9 @@ class Runtime { }); app.on('window-all-closed', function(event) { console.log('window-all-closed'); - app.quit(); + // For Tizen Apps, quit will be called from web_application.js + if (!_this.webApplication) + app.quit(); }); app.on('will-finish-launching', function(event) { console.log('will-finish-launching'); @@ -152,15 +154,19 @@ class Runtime { }); wrt.on('suspend', function() { console.log('suspend'); - _this.webApplication.suspend(); + if (_this.webApplication) + _this.webApplication.suspend(); }); wrt.on('resume', function() { console.log('resume'); - _this.webApplication.resume(); + if (_this.webApplication) + _this.webApplication.resume(); }); wrt.on('terminate', function() { console.log('terminate'); - _this.webApplication.terminate(); + if (_this.webApplication) + _this.webApplication.terminate(); + else app.quit(); }); } onLanguageChanged() {} diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index 81e3b4d5..fd9b5e46 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -53,14 +53,16 @@ class WebApplication { console.log(`window closed : #${self.windowList.length}`); let index = self.windowList.indexOf(window); self.windowList.splice(index, 1); - if (!self.isTerminating && index === self.windowList.length && self.windowList.length > 0) + if (!self.windowList.length) + self.terminate(); + else if (index === self.windowList.length) self.windowList[self.windowList.length - 1].show(); }); }); app.on('web-contents-created', function(event, webContents) { webContents.on('crashed', function() { console.error('webContents crashed'); - app.exit(100); + self.terminate(); }); webContents.session.setPermissionRequestHandler(function(webContents, permission, callback) { console.log(`handlePermissionRequests for ${permission}`); @@ -225,7 +227,7 @@ class WebApplication { let windows = BrowserWindow.getAllWindows(); if (!this.multitaskingSupport) { console.log('multitasking is not supported; quitting app') - app.quit(); + this.terminate(); } else if (!this.backgroundSupport) { windows.forEach((window) => window.setEnabled(false)); } @@ -245,7 +247,12 @@ class WebApplication { this.windowList[this.windowList.length - 1].show(); } terminate() { - this.isTerminating = true; + console.log('WebApplication : terminate'); + if (!this.isTerminating) { + console.log('terminating app'); + this.isTerminating = true; + app.quit(); + } else console.log('termination is already in progress'); } sendAppControlEvent() { const kAppControlEventScript =