From 9b8b2130679526ecfc23a527a9df6d2a8ade1258 Mon Sep 17 00:00:00 2001 From: SangYong Park Date: Wed, 13 Feb 2019 11:31:06 +0900 Subject: [PATCH 01/16] Fix crash issue by app-control Currently reset web application when app-control event occurs after web application is created. but, this is not correct behavior and sometimes crash is occured. so ignore this case, and fix behavior after app-control event object is provided in app-control event. Change-Id: Ife0c8b01dfa13ba99ea3bc405fd854a9db3e7610 Signed-off-by: SangYong Park --- wrt_app/src/runtime.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 4a50762..6b84b64 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -79,9 +79,9 @@ class Runtime { wrt.on('app-control', function() { console.log('app-control'); if (_this.webApplication) { - console.log("Close current app"); - _this.webApplication.close(); - _this.webApplication = null; + // TODO: Reset application or emit appcontrol event + console.log("application is already created"); + return; } if (wrt.isElectronApp()) { -- 2.7.4 From 66b90b39391ba123ba2a9db0bdeda66ef5007c5a Mon Sep 17 00:00:00 2001 From: "ws29.jung" Date: Mon, 18 Feb 2019 21:12:36 +0900 Subject: [PATCH 02/16] Separate wrtjs path from chromium-efl As chromium-efl supports downloadable package, wrtjs cannot share chromium-efl's path to install its own files. To prevent wrtjs files removal during chromium-efl update, now this package has its own file install path. Change-Id: Ia536096e314450314e75cb086fd843f1fb5302f4 Signed-off-by: ws29.jung --- packaging/wrtjs.spec | 2 +- wrt_app/browser/init.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packaging/wrtjs.spec b/packaging/wrtjs.spec index 8e9886d..4962c49 100755 --- a/packaging/wrtjs.spec +++ b/packaging/wrtjs.spec @@ -26,7 +26,7 @@ Web Runtime Engine based on Electron %endif %install -%define _resourcedir /usr/share/chromium-efl/wrt/app +%define _resourcedir /usr/share/wrt/app install -d %{buildroot}%{_bindir} install -d %{buildroot}%{_datadir}/aul install -d %{buildroot}%{_resourcedir} diff --git a/wrt_app/browser/init.js b/wrt_app/browser/init.js index 0dea6c7..1c688d7 100755 --- a/wrt_app/browser/init.js +++ b/wrt_app/browser/init.js @@ -14,4 +14,5 @@ * limitations under the License. */ -require('../../electron.asar/browser/init') +const wrt = require('../browser/wrt'); +require(wrt.getElectronPath() + '/browser/init') -- 2.7.4 From e582178935e6ce57859991889585b09441de80df Mon Sep 17 00:00:00 2001 From: SangYong Park Date: Mon, 25 Feb 2019 16:48:15 +0900 Subject: [PATCH 03/16] Revert "Remove redundant Window hide on suspend as it is handled by platform" This reverts commit 19f4f4582873db8c7b0067896dd0c8d31e3f23e4. Change-Id: I01cdf798364fe286ba29a17a042e6744aecf9994 Signed-off-by: SangYong Park --- wrt_app/src/web_application.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index 8c04e1b..e3cf6da 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -86,22 +86,22 @@ class WebApplication { } suspend() { console.log('WebApplication : suspend'); - if (!this.backgroundSupport) { - BrowserWindow.getAllWindows().forEach((window) => { + BrowserWindow.getAllWindows().forEach((window) => { + window.hide(); + if (!this.backgroundSupport) window.setEnabled(false); - }); - } + }); } resume() { console.log('WebApplication : resume'); if (!this.firstRendered) { return; } - if (!this.backgroundSupport) { - BrowserWindow.getAllWindows().forEach((window) => { + BrowserWindow.getAllWindows().forEach((window) => { + window.show(); + if (!this.backgroundSupport) window.setEnabled(true); - }); - } + }); } } module.exports = WebApplication; -- 2.7.4 From 9de752daa5844b3b3557b8170e1ce0294554e68d Mon Sep 17 00:00:00 2001 From: "jaekuk, lee" Date: Tue, 5 Mar 2019 14:54:55 +0900 Subject: [PATCH 04/16] Update gbs.conf Change-Id: I87e55a33042a5fc9f87f872357772928ead27270 Signed-off-by: jaekuk, lee --- build/gbs.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/gbs.conf b/build/gbs.conf index 32523a0..16e3127 100755 --- a/build/gbs.conf +++ b/build/gbs.conf @@ -56,10 +56,10 @@ repos = repo.tv_product_5.5_musem, repo.tv_product_5.5_base buildroot = ~/GBS-ROOT-5.5-TV-PRODUCT-MUSEM [repo.tv_product_5.5_base] -url = http://10.113.136.26/snapshots/VD/tizen-5.0-base-main2019/standard/latest/ +url = http://168.219.244.109/base/tizen-5.0-base-main2019/standard/latest/ [repo.tv_product_5.5_musem] -url = http://10.113.136.26/snapshots/VD/Tizen-5.0/MAIN2019-MuseM/latest/repos/MuseM/packages/ +url = http://10.113.136.26/snapshots/VD/Tizen-5.5/MAIN2019-MuseM/latest/repos/MuseM/packages/ ############################################# -- 2.7.4 From 9c35489bfb52fa68288286bae1357ce81d7c44b7 Mon Sep 17 00:00:00 2001 From: SangYong Park Date: Thu, 7 Mar 2019 18:55:04 +0900 Subject: [PATCH 05/16] Implement app control handler Change-Id: Ieeba1a9a77fcdaaa2da168b5f04f495859aa5e64 Signed-off-by: SangYong Park --- wrt_app/src/runtime.js | 27 +++++++++++++++++++++------ wrt_app/src/web_application.js | 18 +++++++++++------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 109341e..2f58fd0 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -76,17 +76,32 @@ class Runtime { _this.extensionManager.build(); } }); - wrt.on('app-control', function() { + wrt.on('app-control', function(event, appControl) { console.log('app-control'); + let loadInfo = appControl.getLoadInfo(); + let src = loadInfo.getSrc(); if (_this.webApplication) { - // TODO: Reset application or emit appcontrol event - console.log("application is already created"); - return; + let reload = loadInfo.getReload(); + if (!reload) { + if (src != _this.webApplication.mainWindow.getURL()) + reload = true; + } + // handle http://tizen.org/appcontrol/operation/main operation specially. + // only menu-screen app can send launch request with main operation. + // in this case, web app should have to resume web app not reset. + if (reload && appControl.getOperation() == 'http://tizen.org/appcontrol/operation/main') + reload = false; + if (reload) { + _this.webApplication.mainWindow.destroy(); + _this.webApplication = nullptr; + } else { + _this.webApplication.sendAppControlEvent(); + } } if (wrt.isElectronApp()) { console.log("Electron App launch"); - let filePath = wrt.getPath(); + let filePath = src; let pkgJson = require(filePath.substr(7, filePath.length - 12)); let mainJsPath = filePath.substr(7, filePath.length - 19) + (pkgJson.main || 'index.js'); @@ -96,7 +111,7 @@ class Runtime { app.emit('ready'); } else { _this.webApplication = new WebApplication(options); - _this.webApplication.loadURL(); + _this.webApplication.mainWindow.loadURL(src); if (wrt.appID !== 'NVPDzvckj9.RuntimeAddonSetting') { _this.extensionManager.activateAll(app); } diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index e3cf6da..70a8afc 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -35,9 +35,6 @@ class WebApplication { this.firstRendered = false; this.backgroundSupport = wrt.getBackgroundSupport(); } - close() { - this.mainWindow.close(); - } getBrowserWindowOption() { return { fullscreen: false, @@ -80,10 +77,6 @@ class WebApplication { console.log('webContents did-finish-load'); }); } - loadURL(url) { - console.log('loadURL'); - this.mainWindow.loadURL(url ? url : wrt.getPath()); - } suspend() { console.log('WebApplication : suspend'); BrowserWindow.getAllWindows().forEach((window) => { @@ -103,5 +96,16 @@ class WebApplication { window.setEnabled(true); }); } + sendAppControlEvent() { + const kAppControlEventScript = + '(function(){' + + 'var __event = document.createEvent("CustomEvent");' + + '__event.initCustomEvent("appcontrol", true, true, null);' + + 'document.dispatchEvent(__event);' + + 'for (var i=0; i < window.frames.length; i++)' + + 'window.frames[i].document.dispatchEvent(__event);' + + '})()'; + wrt.executeJS(this.mainWindow.webContents, kAppControlEventScript); + } } module.exports = WebApplication; -- 2.7.4 From e86bc36aedcdebf49052d953bf6285a9847d03f1 Mon Sep 17 00:00:00 2001 From: "min7.choi" Date: Mon, 11 Mar 2019 10:41:31 +0900 Subject: [PATCH 06/16] Remove duplicate code Activated in "browser-window-created" event Change-Id: If0aea9a670cb82121bda0eff0f479381fba0cc39 Signed-off-by: min7.choi --- wrt_app/src/runtime.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 2f58fd0..ea2cc65 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -112,9 +112,6 @@ class Runtime { } else { _this.webApplication = new WebApplication(options); _this.webApplication.mainWindow.loadURL(src); - if (wrt.appID !== 'NVPDzvckj9.RuntimeAddonSetting') { - _this.extensionManager.activateAll(app); - } } // FIX ME : It must be supplemented to set a specific path wrt.setCookiePath(); -- 2.7.4 From 800518c7eb46b2a1ba728d50b8cdb05b9beaf13f Mon Sep 17 00:00:00 2001 From: "surya.kumar7" Date: Mon, 11 Mar 2019 16:04:45 +0530 Subject: [PATCH 07/16] Add multitasking support for vd apps Apps should not quit on suspend only when multitasking support is requested by the app. This is as per the following metadata's requirement: http://samsung.com/tv/metadata/multitasking.support Depends on: https://review.tizen.org/gerrit/201095 Change-Id: I0e9a394720a8d3302b2c08d5b775b49dcf064f71 --- wrt_app/src/web_application.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index 70a8afc..db8c768 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -34,6 +34,7 @@ class WebApplication { this.handleEvents(winopt); this.firstRendered = false; this.backgroundSupport = wrt.getBackgroundSupport(); + this.multitaskingSupport = wrt.getMultitaskingSupport(); } getBrowserWindowOption() { return { @@ -79,11 +80,14 @@ class WebApplication { } suspend() { console.log('WebApplication : suspend'); - BrowserWindow.getAllWindows().forEach((window) => { - window.hide(); - if (!this.backgroundSupport) - window.setEnabled(false); - }); + let windows = BrowserWindow.getAllWindows(); + windows.forEach((window) => window.hide()); + if (!this.multitaskingSupport) { + console.log('multitasking is not supported; quitting app') + app.quit(); + } else if (!this.backgroundSupport) { + windows.forEach((window) => window.setEnabled(false)); + } } resume() { console.log('WebApplication : resume'); -- 2.7.4 From d75bf4ed21d1bef9ab2f8f703f012029c1ce34a0 Mon Sep 17 00:00:00 2001 From: "surya.kumar7" Date: Wed, 13 Mar 2019 17:54:59 +0530 Subject: [PATCH 08/16] Handle SkipReload data sent via appcontrol on vd On vd, platform sends a SkipReload data via appcontrol to indicate app to merely resume and avoid reload. Added support for handling that Change-Id: Ibd2ddb6bae509f9619648c29dd15b7513846c605 Signed-off-by: surya.kumar7 --- wrt_app/src/runtime.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index ea2cc65..939841d 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -80,7 +80,15 @@ class Runtime { console.log('app-control'); let loadInfo = appControl.getLoadInfo(); let src = loadInfo.getSrc(); + if (_this.webApplication) { + let skipReload = appControl.getData('SkipReload'); + if (skipReload == 'Yes') { + console.log('skipping reload'); + _this.webApplication.resume(); + return; + } + let reload = loadInfo.getReload(); if (!reload) { if (src != _this.webApplication.mainWindow.getURL()) -- 2.7.4 From 1064c4f612bb89bc7f518ca95cf7459b94b6ad86 Mon Sep 17 00:00:00 2001 From: SangYong Park Date: Mon, 18 Mar 2019 18:15:41 +0900 Subject: [PATCH 09/16] Fix electron app launching issue Set proper app and electron library path Change-Id: I34e11c4c6152e8b47ff1c2517a4bcd9c49d763bd Signed-off-by: SangYong Park --- wrt_app/browser/init.js | 2 +- wrt_app/renderer/init.js | 3 ++- wrt_app/renderer/wrt_renderer.js | 3 +++ wrt_app/src/runtime.js | 11 ++++++----- 4 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 wrt_app/renderer/wrt_renderer.js diff --git a/wrt_app/browser/init.js b/wrt_app/browser/init.js index 1c688d7..663464c 100755 --- a/wrt_app/browser/init.js +++ b/wrt_app/browser/init.js @@ -14,5 +14,5 @@ * limitations under the License. */ -const wrt = require('../browser/wrt'); +const wrt = require('./wrt'); require(wrt.getElectronPath() + '/browser/init') diff --git a/wrt_app/renderer/init.js b/wrt_app/renderer/init.js index ead2a61..177283d 100755 --- a/wrt_app/renderer/init.js +++ b/wrt_app/renderer/init.js @@ -14,7 +14,8 @@ * limitations under the License. */ -require('../../electron.asar/renderer/init') +const wrtRenderer = require('./wrt_renderer'); +require(wrtRenderer.getElectronPath() + '/renderer/init') process.on('uncaughtException', function (error) { // Do nothing if the user has a custom uncaught exception handler. diff --git a/wrt_app/renderer/wrt_renderer.js b/wrt_app/renderer/wrt_renderer.js new file mode 100644 index 0000000..d642327 --- /dev/null +++ b/wrt_app/renderer/wrt_renderer.js @@ -0,0 +1,3 @@ +const {wrtRenderer} = process.binding('wrt_renderer'); + +module.exports = wrtRenderer diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index ea2cc65..dc1ee02 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -101,10 +101,12 @@ class Runtime { if (wrt.isElectronApp()) { console.log("Electron App launch"); - let filePath = src; - let pkgJson = require(filePath.substr(7, filePath.length - 12)); - let mainJsPath = filePath.substr(7, filePath.length - 19) + - (pkgJson.main || 'index.js'); + require('module').globalPaths.push(wrt.getAppPath()); + let filePath = src[7] === '/' ? src.substr(8) : src.substr(7); // strip "file://" + let pkgJson = require(filePath); + let pos = filePath.lastIndexOf('/'); + let mainJsPath = (pos !== -1 ? filePath.substr(0, pos + 1) : '') + + (pkgJson.main || 'index.js'); const Module = require('module'); Module._load(mainJsPath, Module, true); @@ -125,7 +127,6 @@ class Runtime { _this.webApplication.resume(); }); } - onAppControl() {} onLanguageChanged() {} onLowMemory() {} killAllProcesses() {} -- 2.7.4 From a0735f282d5a480a0e46033c32097d9102df5c7c Mon Sep 17 00:00:00 2001 From: YONGMAN SON Date: Mon, 25 Mar 2019 16:49:21 +0900 Subject: [PATCH 10/16] [VD feature] add preloading feature http://wiki.vd.sec.samsung.net/x/Kr5iAw WRTJS TCs -> 1.5 Change-Id: I929356b3f196c6476d4ee9199b1f80fb5e8729a8 --- wrt_app/src/runtime.js | 14 ++++++++++++++ wrt_app/src/web_application.js | 19 +++++++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index acc25c0..8017068 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -82,6 +82,15 @@ class Runtime { let src = loadInfo.getSrc(); if (_this.webApplication) { + if (_this.webApplication.preloadState == 'readyToShow') { + _this.webApplication.show(); + } + + let launchMode = appControl.getData('http://samsung.com/appcontrol/data/launch_mode'); + if (launchMode != 'backgroundAtStartup') { + _this.webApplication.preloadState = 'none'; + } + let skipReload = appControl.getData('SkipReload'); if (skipReload == 'Yes') { console.log('skipping reload'); @@ -121,6 +130,11 @@ class Runtime { app.emit('ready'); } else { _this.webApplication = new WebApplication(options); + let launchMode = appControl.getData('http://samsung.com/appcontrol/data/launch_mode'); + if (launchMode == 'backgroundAtStartup') { + console.log('backgroundAtStartup'); + _this.webApplication.preloadState = "preload"; + } _this.webApplication.mainWindow.loadURL(src); } // FIX ME : It must be supplemented to set a specific path diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index db8c768..ade5d7d 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -32,7 +32,7 @@ class WebApplication { } console.log('mainWindow id : ' + this.mainWindow.id); this.handleEvents(winopt); - this.firstRendered = false; + this.preloadState = 'none'; this.backgroundSupport = wrt.getBackgroundSupport(); this.multitaskingSupport = wrt.getMultitaskingSupport(); } @@ -56,12 +56,12 @@ class WebApplication { this.mainWindow.on('ready-to-show', function() { console.log('mainWindow ready-to-show'); wrt.hideSplashScreen(1); - self.firstRendered = true; - - if (!self.mainWindow.isVisible()) { - console.log('show browserWindow'); - self.mainWindow.show(); + if (self.preloadState == 'preload') { + self.preloadState = 'readyToShow'; + console.log('preloading show is skipped!'); + return; } + self.show(); }); this.mainWindow.on('closed', function() { console.log('mainWindow closed!'); @@ -111,5 +111,12 @@ class WebApplication { '})()'; wrt.executeJS(this.mainWindow.webContents, kAppControlEventScript); } + show() { + this.preloadState = 'none'; + if (!this.mainWindow.isVisible()) { + console.log('show browserWindow'); + this.mainWindow.show(); + } + } } module.exports = WebApplication; -- 2.7.4 From ab48671261d6adb069b1ceddd67b9331a5e688e4 Mon Sep 17 00:00:00 2001 From: "surya.kumar7" Date: Tue, 12 Mar 2019 14:22:07 +0530 Subject: [PATCH 11/16] fixup! Implement app control handler Modified certain code to prevent inadvertent app exit, wrong sequence and fixed an undefined object Change-Id: Iaf31edaadd803ccf45d7b9edfdb67f4cf4e9baee Signed-off-by: surya.kumar7 --- wrt_app/src/runtime.js | 31 +++++++++++++------------------ wrt_app/src/web_application.js | 7 ++++++- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 8017068..d73db46 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -81,7 +81,17 @@ class Runtime { let loadInfo = appControl.getLoadInfo(); let src = loadInfo.getSrc(); - if (_this.webApplication) { + if (wrt.isElectronApp()) { + console.log("Electron App launch"); + let filePath = src; + let pkgJson = require(filePath.substr(7, filePath.length - 12)); + let mainJsPath = filePath.substr(7, filePath.length - 19) + + (pkgJson.main || 'index.js'); + + const Module = require('module'); + Module._load(mainJsPath, Module, true); + app.emit('ready'); + } else if (_this.webApplication) { if (_this.webApplication.preloadState == 'readyToShow') { _this.webApplication.show(); } @@ -90,7 +100,6 @@ class Runtime { if (launchMode != 'backgroundAtStartup') { _this.webApplication.preloadState = 'none'; } - let skipReload = appControl.getData('SkipReload'); if (skipReload == 'Yes') { console.log('skipping reload'); @@ -109,25 +118,11 @@ class Runtime { if (reload && appControl.getOperation() == 'http://tizen.org/appcontrol/operation/main') reload = false; if (reload) { - _this.webApplication.mainWindow.destroy(); - _this.webApplication = nullptr; + _this.webApplication.closeWindows(); + _this.webApplication.mainWindow.loadURL(src); } else { _this.webApplication.sendAppControlEvent(); } - } - - if (wrt.isElectronApp()) { - console.log("Electron App launch"); - require('module').globalPaths.push(wrt.getAppPath()); - let filePath = src[7] === '/' ? src.substr(8) : src.substr(7); // strip "file://" - let pkgJson = require(filePath); - let pos = filePath.lastIndexOf('/'); - let mainJsPath = (pos !== -1 ? filePath.substr(0, pos + 1) : '') + - (pkgJson.main || 'index.js'); - - const Module = require('module'); - Module._load(mainJsPath, Module, true); - app.emit('ready'); } else { _this.webApplication = new WebApplication(options); let launchMode = appControl.getData('http://samsung.com/appcontrol/data/launch_mode'); diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index ade5d7d..730f307 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -91,7 +91,7 @@ class WebApplication { } resume() { console.log('WebApplication : resume'); - if (!this.firstRendered) { + if (this.preloadState != 'none') { return; } BrowserWindow.getAllWindows().forEach((window) => { @@ -117,6 +117,11 @@ class WebApplication { console.log('show browserWindow'); this.mainWindow.show(); } + closeWindows() { + BrowserWindow.getAllWindows().forEach((window) => { + if (window != this.mainWindow) + window.destroy(); + }); } } module.exports = WebApplication; -- 2.7.4 From 533b3c74ae674681ec2dc402cc35204cb98bea91 Mon Sep 17 00:00:00 2001 From: KwangHyuk Kim Date: Wed, 27 Mar 2019 01:20:43 +0000 Subject: [PATCH 12/16] Revert "fixup! Implement app control handler" This reverts commit ab48671261d6adb069b1ceddd67b9331a5e688e4. Change-Id: I05eb2480d72e7ec66bd0e09ca780639138887fbc --- wrt_app/src/runtime.js | 31 ++++++++++++++++++------------- wrt_app/src/web_application.js | 7 +------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index d73db46..8017068 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -81,17 +81,7 @@ class Runtime { let loadInfo = appControl.getLoadInfo(); let src = loadInfo.getSrc(); - if (wrt.isElectronApp()) { - console.log("Electron App launch"); - let filePath = src; - let pkgJson = require(filePath.substr(7, filePath.length - 12)); - let mainJsPath = filePath.substr(7, filePath.length - 19) + - (pkgJson.main || 'index.js'); - - const Module = require('module'); - Module._load(mainJsPath, Module, true); - app.emit('ready'); - } else if (_this.webApplication) { + if (_this.webApplication) { if (_this.webApplication.preloadState == 'readyToShow') { _this.webApplication.show(); } @@ -100,6 +90,7 @@ class Runtime { if (launchMode != 'backgroundAtStartup') { _this.webApplication.preloadState = 'none'; } + let skipReload = appControl.getData('SkipReload'); if (skipReload == 'Yes') { console.log('skipping reload'); @@ -118,11 +109,25 @@ class Runtime { if (reload && appControl.getOperation() == 'http://tizen.org/appcontrol/operation/main') reload = false; if (reload) { - _this.webApplication.closeWindows(); - _this.webApplication.mainWindow.loadURL(src); + _this.webApplication.mainWindow.destroy(); + _this.webApplication = nullptr; } else { _this.webApplication.sendAppControlEvent(); } + } + + if (wrt.isElectronApp()) { + console.log("Electron App launch"); + require('module').globalPaths.push(wrt.getAppPath()); + let filePath = src[7] === '/' ? src.substr(8) : src.substr(7); // strip "file://" + let pkgJson = require(filePath); + let pos = filePath.lastIndexOf('/'); + let mainJsPath = (pos !== -1 ? filePath.substr(0, pos + 1) : '') + + (pkgJson.main || 'index.js'); + + const Module = require('module'); + Module._load(mainJsPath, Module, true); + app.emit('ready'); } else { _this.webApplication = new WebApplication(options); let launchMode = appControl.getData('http://samsung.com/appcontrol/data/launch_mode'); diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index 730f307..ade5d7d 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -91,7 +91,7 @@ class WebApplication { } resume() { console.log('WebApplication : resume'); - if (this.preloadState != 'none') { + if (!this.firstRendered) { return; } BrowserWindow.getAllWindows().forEach((window) => { @@ -117,11 +117,6 @@ class WebApplication { console.log('show browserWindow'); this.mainWindow.show(); } - closeWindows() { - BrowserWindow.getAllWindows().forEach((window) => { - if (window != this.mainWindow) - window.destroy(); - }); } } module.exports = WebApplication; -- 2.7.4 From 87fb5ae279e13860c16bb4c83986270a4b662b9e Mon Sep 17 00:00:00 2001 From: YONGMAN SON Date: Wed, 27 Mar 2019 13:49:35 +0900 Subject: [PATCH 13/16] [VD feature] Additional implementation of preloading preloaded widget suspend. ------------------------------- [VD feature] add preloading feature http://wiki.vd.sec.samsung.net/x/Kr5iAw WRTJS TCs -> 1.5 Change-Id: I2ddc1e37489ad06afe42335df0d02c70a0d5fe0e --- wrt_app/src/web_application.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index ade5d7d..23d8cd8 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -32,6 +32,7 @@ class WebApplication { } console.log('mainWindow id : ' + this.mainWindow.id); this.handleEvents(winopt); + this.firstRendered = false; this.preloadState = 'none'; this.backgroundSupport = wrt.getBackgroundSupport(); this.multitaskingSupport = wrt.getMultitaskingSupport(); @@ -56,6 +57,7 @@ class WebApplication { this.mainWindow.on('ready-to-show', function() { console.log('mainWindow ready-to-show'); wrt.hideSplashScreen(1); + self.firstRendered = true; if (self.preloadState == 'preload') { self.preloadState = 'readyToShow'; console.log('preloading show is skipped!'); @@ -76,6 +78,9 @@ class WebApplication { }); this.mainWindow.webContents.on('did-finish-load', function() { console.log('webContents did-finish-load'); + if (self.preloadState == 'readyToShow' || self.preloadState == 'preload') { + self.suspend(); + } }); } suspend() { @@ -92,6 +97,7 @@ class WebApplication { resume() { console.log('WebApplication : resume'); if (!this.firstRendered) { + console.log('WebApplication : resume firstRendered is false'); return; } BrowserWindow.getAllWindows().forEach((window) => { @@ -112,6 +118,7 @@ class WebApplication { wrt.executeJS(this.mainWindow.webContents, kAppControlEventScript); } show() { + console.log('WebApplication : show'); this.preloadState = 'none'; if (!this.mainWindow.isVisible()) { console.log('show browserWindow'); -- 2.7.4 From 541101aca99c20daeaf9f312fea1c3bbeb48ac33 Mon Sep 17 00:00:00 2001 From: "jaekuk, lee" Date: Fri, 22 Mar 2019 15:03:35 +0900 Subject: [PATCH 14/16] Implement Inspector Depends on: https://review.tizen.org/gerrit/201467 Change-Id: Ia0ea9c08cf1e6411e0105b2b1b12fc62e093a856 Signed-off-by: jaekuk, lee --- wrt_app/src/runtime.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index acc25c0..3831bac 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -29,6 +29,7 @@ class Runtime { this.handleIpcMessages(); this.extensionManager = null; this.isLaunched = false; + this.debug_mode = false; var _this = this; app.on('will-finish-launching', function() { @@ -125,6 +126,12 @@ class Runtime { } // FIX ME : It must be supplemented to set a specific path wrt.setCookiePath(); + + // AUL public key - To support debug argument + if (!_this.debug_mode && appControl.getData('__AUL_DEBUG__') == "1") { + _this.debug_mode = true; + _this.launchInspector(appControl); + } }); wrt.on('suspend', function() { console.log('suspend'); @@ -158,5 +165,9 @@ class Runtime { return _this.extensionManager.deactivate(app, name); }); } + launchInspector(appControl) { + var data = { "port" : [ wrt.getDebuggingPort().toString() ] }; + appControl.reply(data); + } } module.exports = Runtime; -- 2.7.4 From 1540a53a8685c65e0c9df6ded36b130321d1056c Mon Sep 17 00:00:00 2001 From: "jaekuk, lee" Date: Fri, 29 Mar 2019 01:51:28 +0000 Subject: [PATCH 15/16] Update gbs.conf Change-Id: Ia6f9f45f47dbbc9941847b6f9e3202cb7ba94708 Signed-off-by: jaekuk, lee --- build/gbs.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/gbs.conf b/build/gbs.conf index 16e3127..af66f04 100755 --- a/build/gbs.conf +++ b/build/gbs.conf @@ -56,7 +56,7 @@ repos = repo.tv_product_5.5_musem, repo.tv_product_5.5_base buildroot = ~/GBS-ROOT-5.5-TV-PRODUCT-MUSEM [repo.tv_product_5.5_base] -url = http://168.219.244.109/base/tizen-5.0-base-main2019/standard/latest/ +url = http://10.113.136.32/download_trbs/snapshots/tizen/5.5-vd-base/latest/repos/standard/packages/ [repo.tv_product_5.5_musem] url = http://10.113.136.26/snapshots/VD/Tizen-5.5/MAIN2019-MuseM/latest/repos/MuseM/packages/ -- 2.7.4 From 360cf53e778c7c639af6b18719a06655338c7528 Mon Sep 17 00:00:00 2001 From: "jaekuk, lee" Date: Fri, 29 Mar 2019 13:31:13 +0900 Subject: [PATCH 16/16] Update gbs.conf add user ID and PW for spin account Change-Id: I314fedeee008d61895d096fae086b20d11cd36d0 Signed-off-by: jaekuk, lee --- build/gbs.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/gbs.conf b/build/gbs.conf index af66f04..0acd0d6 100755 --- a/build/gbs.conf +++ b/build/gbs.conf @@ -57,6 +57,8 @@ buildroot = ~/GBS-ROOT-5.5-TV-PRODUCT-MUSEM [repo.tv_product_5.5_base] url = http://10.113.136.32/download_trbs/snapshots/tizen/5.5-vd-base/latest/repos/standard/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== [repo.tv_product_5.5_musem] url = http://10.113.136.26/snapshots/VD/Tizen-5.5/MAIN2019-MuseM/latest/repos/MuseM/packages/ -- 2.7.4