From 1e706bba79c504097569b5688164353c0b60872c Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Tue, 7 Jan 2020 17:18:08 +0900 Subject: [PATCH 01/16] Change hide() time for 'visibilitychange' callback In window.hide(), 'visibilitychange' or 'webkitvisibilitychange' event is dispatched from Document::DidChangeVisibilityState(), which is triggered by RenderWidgetHostViewEfl::SetPageVisibility() In window.setEnable(), it try to request suspending to renderer thread, then it try to stop chromium resources even JavaScript context. Thus if hide() is called after setEnable(), it can defer application's 'visibilitchange' callback unexpectedly. Change-Id: Ibe89b79f8a01ca170db40af8a5792fe64e9bf4ba Signed-off-by: DongHyun Song --- wrt_app/src/web_application.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) mode change 100644 => 100755 wrt_app/src/web_application.js diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js old mode 100644 new mode 100755 index 38efdab..2c478d0 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -312,6 +312,7 @@ class WebApplication { console.log('WebApplication : suspend - Invalid event emitter'); } this.suspended = true; + this.windowList[this.windowList.length - 1].hide(); if (wrt.tv) { wrt.tv.flushCookie(); this.windowList.forEach((window) => window.webContents.session.flushStorageData()); @@ -327,13 +328,10 @@ class WebApplication { this.windowList.forEach((window) => window.setEnabled(false)); } } - this.windowList[this.windowList.length - 1].hide(); } resume() { console.log('WebApplication : resume'); - this.suspended = false; - if (this.addonEmitter) { console.log('WebApplication : resume - Found event emitter'); this.addonEmitter.emit('lcResume', this.mainWindow.id); @@ -343,7 +341,7 @@ class WebApplication { if (!this.firstRendered) { console.log('WebApplication : resume firstRendered is false'); - return; + return; } if (!this.backgroundRunnable()) { this.windowList.forEach((window) => window.setEnabled(true)); -- 2.7.4 From 1599f3b7db85f19ebb5feffd881a5185f26fc073 Mon Sep 17 00:00:00 2001 From: YONGMAN SON Date: Fri, 10 Jan 2020 11:17:18 +0900 Subject: [PATCH 02/16] [VD] skip wrt-loader launch from LFD product zygote process crashed due to a capability issue related to the zone container in the LFD prodect. LFD uses only one webapp, so there is no need for a wrt-loader. Change-Id: I64f977a0e47d6963726ca8c44d5b360b2547ac34 Signed-off-by: YONGMAN SON --- packaging/wrtjs.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packaging/wrtjs.spec b/packaging/wrtjs.spec index 5e76021..7754296 100755 --- a/packaging/wrtjs.spec +++ b/packaging/wrtjs.spec @@ -35,6 +35,7 @@ install -d %{buildroot}%{_resourcedir} install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir} install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/ %else +%if "%{_vd_cfg_product_type}" != "LFD" ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader %if "%{_vd_cfg_platform_type}" == "FULL_SMART" install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader @@ -43,6 +44,7 @@ install -d %{buildroot}%{_resourcedir} install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader %endif %endif +%endif cp -r wrt_app/* %{buildroot}%{_resourcedir}/ %post -- 2.7.4 From 9ec00eb2d51387e34ee67b2ebd9442ec4f6c4ddf Mon Sep 17 00:00:00 2001 From: YONGMAN SON Date: Mon, 13 Jan 2020 15:47:18 +0900 Subject: [PATCH 03/16] [VD] Build fix - skip wrt-loader launch for LFD product Eventually, This patch won't make the wrt.loader service file for LFD product. In LFD, it has only one webapp which is launched early time after boot. Thus, wrt-loader is not effective to LFD product. In addition, with WRTjs, zygote process is changed to /usr/bin/wrt from efl_webprocess. 'wrt' has more capability than efl_webprocess and some of its capability (i.e. cap_setpcap), they cannot be working with zone container of security framework. Thus, zygote process is going to die with wrt-loader launching. If webapp is launched directly without wrt-loader, the webapp process is started with app privilege, which means that process has changed smack label, process group as app permission its manifest describes. With these reason, this patch will not make wrt.loader file for LFD product. Change-Id: I6a1db9b65a4e20ac70d072f93f581d50085ee814 Signed-off-by: YONGMAN SON Signed-off-by: DongHyun Song --- packaging/wrtjs.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/wrtjs.spec b/packaging/wrtjs.spec index 7754296..deccb07 100755 --- a/packaging/wrtjs.spec +++ b/packaging/wrtjs.spec @@ -35,7 +35,6 @@ install -d %{buildroot}%{_resourcedir} install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir} install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/ %else -%if "%{_vd_cfg_product_type}" != "LFD" ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader %if "%{_vd_cfg_platform_type}" == "FULL_SMART" install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader @@ -44,7 +43,6 @@ install -d %{buildroot}%{_resourcedir} install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader %endif %endif -%endif cp -r wrt_app/* %{buildroot}%{_resourcedir}/ %post @@ -62,5 +60,7 @@ rm -fr %{buildroot} %else %{_bindir}/wrt-loader %endif +%if "%{_vd_cfg_product_type}" != "LFD" %{_datadir}/aul/wrt.loader +%endif %{_resourcedir}/* -- 2.7.4 From ae28808c2b7a7fdc7b791dca5c752b0153772388 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Wed, 15 Jan 2020 09:59:44 +0900 Subject: [PATCH 04/16] fixup! [VD] Build fix - skip wrt-loader launch for LFD product Signed-off-by: DongHyun Song --- packaging/wrtjs.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packaging/wrtjs.spec b/packaging/wrtjs.spec index deccb07..9d24b2f 100755 --- a/packaging/wrtjs.spec +++ b/packaging/wrtjs.spec @@ -36,6 +36,7 @@ install -d %{buildroot}%{_resourcedir} install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/ %else ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader +%if "%{_vd_cfg_product_type}" != "LFD" %if "%{_vd_cfg_platform_type}" == "FULL_SMART" install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader %endif @@ -43,6 +44,7 @@ install -d %{buildroot}%{_resourcedir} install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader %endif %endif +%endif cp -r wrt_app/* %{buildroot}%{_resourcedir}/ %post @@ -61,6 +63,6 @@ rm -fr %{buildroot} %{_bindir}/wrt-loader %endif %if "%{_vd_cfg_product_type}" != "LFD" -%{_datadir}/aul/wrt.loader + %{_datadir}/aul/wrt.loader %endif %{_resourcedir}/* -- 2.7.4 From 914215082980ba95959e8f54d5a32582039cb696 Mon Sep 17 00:00:00 2001 From: SangYong Park Date: Wed, 8 Jan 2020 10:21:54 +0900 Subject: [PATCH 05/16] Support m76 migration add process.wrtBinding() for using process.binding() and process._linkedBinding(). (electron's binding api is changed to process._linkedBinding() from process.binding()) and, change class name of TizenExtension to XWalkExtension. Change-Id: I059fa50051b206bcf5b478442ccf6658ea71ce60 Signed-off-by: SangYong Park --- wrt_app/browser/init.js | 3 ++- wrt_app/browser/wrt.js | 2 +- wrt_app/browser/wrt_web_contents.js | 4 ++-- wrt_app/browser/wrt_window.js | 2 +- .../{service/plugins.json => common/extensions.json} | 0 wrt_app/common/init.js | 11 +++++++++++ .../wrt_xwalk_extension.js} | 19 +++++++++---------- wrt_app/renderer/init.js | 1 + wrt_app/renderer/wrt_renderer.js | 2 +- wrt_app/service/main.js | 6 +++--- wrt_app/service/wrt_service_extension.js | 4 ---- wrt_app/src/runtime.js | 4 ++-- 12 files changed, 33 insertions(+), 25 deletions(-) rename wrt_app/{service/plugins.json => common/extensions.json} (100%) create mode 100644 wrt_app/common/init.js rename wrt_app/{service/tizen_extension.js => common/wrt_xwalk_extension.js} (93%) delete mode 100644 wrt_app/service/wrt_service_extension.js diff --git a/wrt_app/browser/init.js b/wrt_app/browser/init.js index 663464c..9fccd6f 100755 --- a/wrt_app/browser/init.js +++ b/wrt_app/browser/init.js @@ -14,5 +14,6 @@ * limitations under the License. */ -const wrt = require('./wrt'); +require('../common/init') +const wrt = require('./wrt') require(wrt.getElectronPath() + '/browser/init') diff --git a/wrt_app/browser/wrt.js b/wrt_app/browser/wrt.js index a49ef33..288cb5b 100755 --- a/wrt_app/browser/wrt.js +++ b/wrt_app/browser/wrt.js @@ -14,7 +14,7 @@ * limitations under the License. */ require('../common/exception_handling'); -const {wrt} = process.binding('wrt'); +const {wrt} = process.wrtBinding('wrt'); const {EventEmitter} = require('events'); const util = require('util'); diff --git a/wrt_app/browser/wrt_web_contents.js b/wrt_app/browser/wrt_web_contents.js index 994cca2..5c2535a 100644 --- a/wrt_app/browser/wrt_web_contents.js +++ b/wrt_app/browser/wrt_web_contents.js @@ -14,9 +14,9 @@ * limitations under the License. */ -const binding = process.binding('wrt_web_contents') +const binding = process.wrtBinding('wrt_web_contents') const { WRTWebContents } = binding -const { WebContents: AtomWebContents } = process.atomBinding('web_contents') +const { WebContents: AtomWebContents } = process.wrtBinding('atom_browser_web_contents') const parent = AtomWebContents.prototype AtomWebContents.prototype = WRTWebContents.prototype diff --git a/wrt_app/browser/wrt_window.js b/wrt_app/browser/wrt_window.js index 6917b69..004f26d 100644 --- a/wrt_app/browser/wrt_window.js +++ b/wrt_app/browser/wrt_window.js @@ -14,7 +14,7 @@ * limitations under the License. */ -const { WRTWindow } = process.binding('wrt_window') +const { WRTWindow } = process.wrtBinding('wrt_window') const { BrowserWindow } = require('electron') const WRTWebContents = require('../browser/wrt_web_contents'); diff --git a/wrt_app/service/plugins.json b/wrt_app/common/extensions.json similarity index 100% rename from wrt_app/service/plugins.json rename to wrt_app/common/extensions.json diff --git a/wrt_app/common/init.js b/wrt_app/common/init.js new file mode 100644 index 0000000..b407422 --- /dev/null +++ b/wrt_app/common/init.js @@ -0,0 +1,11 @@ +process.wrtBinding = (name) => { + try { + return process._linkedBinding(name) + } catch (error) { + if (/No such module/.test(error.message)) { + return process.binding(name) + } else { + throw error + } + } +} diff --git a/wrt_app/service/tizen_extension.js b/wrt_app/common/wrt_xwalk_extension.js similarity index 93% rename from wrt_app/service/tizen_extension.js rename to wrt_app/common/wrt_xwalk_extension.js index 3c88d5a..86a6575 100644 --- a/wrt_app/service/tizen_extension.js +++ b/wrt_app/common/wrt_xwalk_extension.js @@ -14,24 +14,22 @@ * limitations under the License. */ -const extension = require('./wrt_service_extension'); -const wrt = require('../browser/wrt'); -var window = global; +require('./exception_handling'); + var api_ = {}; var extensions_ = {}; -var runtime_variables_ = {'runtime_name': 'wrt-service'}; -class TizenExtension { +class XWalkExtension { constructor() { - let plugins = require('./plugins.json'); - extension.initialize(runtime_variables_); + let plugins = require('./extensions.json'); - var extensions = extension.getExtensions(); + const binding = process.wrtBinding('wrt_xwalk_extension') + var extensions = binding.getExtensions(); for (var i = 0; i < extensions.length; i++) { extensions[i].loaded = false; for (var idx in plugins) { if (extensions[i].name === plugins[idx].name) { - console.log("ExtensionLoader name " + extensions[i].name); + console.log("Load extension : " + extensions[i].name); extensions_[extensions[i].name] = extensions[i]; } } @@ -215,4 +213,5 @@ class TizenExtension { } } } -module.exports = TizenExtension; + +module.exports = XWalkExtension; diff --git a/wrt_app/renderer/init.js b/wrt_app/renderer/init.js index f0265e3..e207bcd 100755 --- a/wrt_app/renderer/init.js +++ b/wrt_app/renderer/init.js @@ -14,6 +14,7 @@ * limitations under the License. */ +require('../common/init') require('../common/exception_handling'); require('../common/config-search-paths'); const wrtRenderer = require('./wrt_renderer'); diff --git a/wrt_app/renderer/wrt_renderer.js b/wrt_app/renderer/wrt_renderer.js index d642327..c1b183a 100644 --- a/wrt_app/renderer/wrt_renderer.js +++ b/wrt_app/renderer/wrt_renderer.js @@ -1,3 +1,3 @@ -const {wrtRenderer} = process.binding('wrt_renderer'); +const {wrtRenderer} = process.wrtBinding('wrt_renderer'); module.exports = wrtRenderer diff --git a/wrt_app/service/main.js b/wrt_app/service/main.js index ed10e5d..4e2a042 100755 --- a/wrt_app/service/main.js +++ b/wrt_app/service/main.js @@ -19,17 +19,17 @@ const wrt = require('../browser/wrt'); const vm = require('vm'); const AccessControlManager = require('./access_control_manager'); -const TizenExtension = require('./tizen_extension'); +const XWalkExtension = require('../common/wrt_xwalk_extension'); var sandbox = []; var sandbox_count = 0; wrt.on('start-service', (event, app_id, permissions) => { console.log('start service app : ' + app_id + ', permissions : ' + permissions); - new TizenExtension(); + new XWalkExtension(); if (sandbox[app_id] === undefined) { if (sandbox_count === 0) { - new TizenExtension(); + new XWalkExtension(); } sandbox_count++; const Module = require('module'); diff --git a/wrt_app/service/wrt_service_extension.js b/wrt_app/service/wrt_service_extension.js deleted file mode 100644 index 8207706..0000000 --- a/wrt_app/service/wrt_service_extension.js +++ /dev/null @@ -1,4 +0,0 @@ -require('../common/exception_handling'); -const wrt_service_extension = process.binding('wrt_service_extension') - -module.exports = wrt_service_extension; diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 3fa6ac9..bd641fc 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -21,9 +21,9 @@ const AddonManager = require('./addon_manager'); const {app, ipcMain} = require('electron'); const IPC_MESSAGE = require('./ipc_message'); const TimerManager = require('../service/timer_manager'); -const TizenExtension = require('../service/tizen_extension'); const WAS_EVENT = require('./was_event'); const WebApplication = require('./web_application'); +const XWalkExtension = require('../common/wrt_xwalk_extension'); class Runtime { constructor(options) { @@ -215,7 +215,7 @@ class Runtime { if (type === 'startService') { if (_this.sandbox[app_id] === undefined) { if (_this.sandbox_count === 0) { - new TizenExtension(); + new XWalkExtension(); } _this.sandbox_count++; const fs = require('fs'); -- 2.7.4 From 61b53adaff21f0f5eca86a12dfd5a8b03ebe4aab Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Thu, 30 Jan 2020 10:09:42 +0900 Subject: [PATCH 06/16] [VD] Add clearDeadMount API for TV profile Related patch: https://review.tizen.org/gerrit/223399/ Change-Id: I1592e69f915c996e91fb23d5321184a9f55321af Signed-off-by: DongHyun Song --- wrt_app/src/runtime.js | 1 + 1 file changed, 1 insertion(+) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 3fa6ac9..e53d2f6 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -97,6 +97,7 @@ class Runtime { if (wrt.tv) { wrt.tv.importCertificate(''); wrt.tv.optimizeCache(); + wrt.tv.clearDeadMount(); } }); wrt.on('app-control', function(event, appControl) { -- 2.7.4 From 1548dbb019f5a8eccbc2d26b06f5f75279a2d6c2 Mon Sep 17 00:00:00 2001 From: "jaekuk, lee" Date: Thu, 30 Jan 2020 14:26:54 +0900 Subject: [PATCH 07/16] [VD] Add gbs configuration for NikeM build ('20 Product) Reference: https://review.tizen.org/gerrit/219504 Change-Id: Ib8dfb688d15010c5f0933427b2780eb6f2cfa1d7 Signed-off-by: jaekuk, lee --- tizen/build/common.sh | 2 +- tizen/build/gbs.conf.in | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) mode change 100644 => 100755 tizen/build/common.sh diff --git a/tizen/build/common.sh b/tizen/build/common.sh old mode 100644 new mode 100755 index 5c42bf0..bd7ac97 --- a/tizen/build/common.sh +++ b/tizen/build/common.sh @@ -62,7 +62,7 @@ function setupAndExecuteTargetBuild() { if [[ $platform == "tv" ]]; then if [ "$DEFAULT_TIZEN_VERSION" == "5.5" ]; then # FIXME: The latest version of platform hasn't been released yet. - PROFILE=tztv_5.5_arm-musem + PROFILE=tztv_5.5_arm-nikem fi elif [[ $platform == "da" ]]; then if [ "$DEFAULT_TIZEN_VERSION" == "5.5" ]; then diff --git a/tizen/build/gbs.conf.in b/tizen/build/gbs.conf.in index b13f2ee..c97b0ec 100755 --- a/tizen/build/gbs.conf.in +++ b/tizen/build/gbs.conf.in @@ -121,7 +121,26 @@ passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== [obs.tizen_product_tv] url = https://168.219.243.64/api -############################################### +############################################ +# +# Tizen v5.5 for product tv (NikeM armv7l) +# +[profile.tztv_5.5_arm-nikem] +obs = obs.tizen_product_tv +repos = repo.tv_product_5.5_nikem, repo.tv_product_5.5_base +buildroot = ~/GBS-ROOT-5.5-TV-PRODUCT-NIKEM + +[repo.tv_product_5.5_base] +url = http://168.219.244.109/base/current/standard/latest/repos/base/armv7l/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== + +[repo.tv_product_5.5_nikem] +url = http://168.219.244.109/products/tv/archive/current/ONEMAIN/NikeM/latest/repos/product/armv7l/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== + +############################################ # # Tizen v5.5 for product tv (MuseM armv7l) # @@ -131,12 +150,12 @@ repos = repo.tv_product_5.5_base, repo.tv_product_5.5_musem 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/ +url = http://168.219.244.109/base/tizen-5.5-base-main/standard/latest/ 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/ +url = http://168.219.244.109/products/tv/archive/2020/ONEMAIN/MuseM/latest/ user = blinkbot passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== -- 2.7.4 From a160dc5937ff6138245064cac3bc8c8b28075d36 Mon Sep 17 00:00:00 2001 From: "ws29.jung" Date: Fri, 17 Jan 2020 10:43:25 +0900 Subject: [PATCH 08/16] Enable Browser Tizen Device APIs for Addon There are lack of API support to develope Addon. To expand functionality of Addon, now Tizen Device APIs are usable. Change-Id: I4bbff162c59ddbbff6737f9965a928afe4a62730 Signed-off-by: ws29.jung --- wrt_app/src/runtime.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wrt_app/src/runtime.js b/wrt_app/src/runtime.js index 3c4bb52..52c61ac 100755 --- a/wrt_app/src/runtime.js +++ b/wrt_app/src/runtime.js @@ -36,6 +36,7 @@ class Runtime { this.sandbox_count = 0; this.webContents = null; this.addonPkgs = []; + this.extensionInit = false; var _this = this; app.on('before-quit', function(event) { @@ -93,6 +94,10 @@ class Runtime { _this.addonManager = new AddonManager(); if (!options.noAddons) { _this.addonManager.build(); + if (!_this.extensionInit) { + new XWalkExtension(); + _this.extensionInit = true; + } } if (wrt.tv) { wrt.tv.importCertificate(''); @@ -215,8 +220,9 @@ class Runtime { const vm = require('vm'); if (type === 'startService') { if (_this.sandbox[app_id] === undefined) { - if (_this.sandbox_count === 0) { + if (_this.sandbox_count === 0 && !_this.extensionInit) { new XWalkExtension(); + _this.extensionInit = true; } _this.sandbox_count++; const fs = require('fs'); -- 2.7.4 From 7df5a155d10efea396e0f8b2c4c1c0c921bc0225 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Thu, 6 Feb 2020 12:39:04 +0900 Subject: [PATCH 09/16] [VD] ClearAllTilesResources for Deeplink To solve unexpected flickering issue, this patch will call ClearAllTilesResources when deeplink reloading case Related patch: https://review.tizen.org/gerrit/224035 Change-Id: I2568f6906241d45fc3730a63614e8af12bb3354c Signed-off-by: DongHyun Song --- wrt_app/src/web_application.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js index 5c47d36..5429050 100755 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -401,6 +401,8 @@ class WebApplication { } } closeWindows() { + if (wrt.tv) + wrt.tv.clearSurface(this.mainWindow.webContents); this.windowList.forEach((window) => { if (window != this.mainWindow) window.destroy(); -- 2.7.4 From 22e585144842f679258f520f653dfccb4aa892c1 Mon Sep 17 00:00:00 2001 From: "k2.nagaraju" Date: Tue, 18 Feb 2020 18:19:39 +0530 Subject: [PATCH 10/16] fixup! Support m76 migration Added |require('../common/init')| to get the defination of |process.wrtBinding()| for service Change-Id: Icd87a17ed1d33fc8e98fbcf614f9ff7d70f50a90 Signed-off-by: k2.nagaraju --- wrt_app/service/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/wrt_app/service/main.js b/wrt_app/service/main.js index 4e2a042..f6350de 100755 --- a/wrt_app/service/main.js +++ b/wrt_app/service/main.js @@ -16,6 +16,7 @@ 'use strict'; +require('../common/init') const wrt = require('../browser/wrt'); const vm = require('vm'); const AccessControlManager = require('./access_control_manager'); -- 2.7.4 From 8fe09afd60b78a02a30212ff813209cf6ecd7133 Mon Sep 17 00:00:00 2001 From: Youngsoo Choi Date: Thu, 20 Feb 2020 17:17:27 -0800 Subject: [PATCH 11/16] Set default gbs repository to tizen 6.0 This sets default gbs repository to tizen 6.0 for public targets and product tv. Change-Id: I89b37a76a4af872988fb8d3b7590262d732932e5 Signed-off-by: Youngsoo Choi --- tizen/build/common.sh | 15 ++++----------- tizen/build/gbs.conf.in | 31 +++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/tizen/build/common.sh b/tizen/build/common.sh index bd7ac97..806ed5d 100755 --- a/tizen/build/common.sh +++ b/tizen/build/common.sh @@ -6,7 +6,7 @@ export CHROME_SRC="${TOPDIR}" # Please set DEFAULT_TIZEN_VERSION to empty value for the latest tizen version # or set DEFAULT_TIZEN_VERSION to current tizen version for the others. -export DEFAULT_TIZEN_VERSION=5.5 +export DEFAULT_TIZEN_VERSION=latest if [ "$(echo "$@" | grep -e "--tizen")" != "" ]; then tizen_version=$(echo $@ | sed -e 's#.*--tizen_\([0-9.]*\).*#\1#') @@ -60,18 +60,11 @@ function setupAndExecuteTargetBuild() { if [ "$PROFILE" == "" ]; then if [[ $platform == "tv" ]]; then - if [ "$DEFAULT_TIZEN_VERSION" == "5.5" ]; then - # FIXME: The latest version of platform hasn't been released yet. - PROFILE=tztv_5.5_arm-nikem - fi + PROFILE=tztv_6.0_arm-nikem elif [[ $platform == "da" ]]; then - if [ "$DEFAULT_TIZEN_VERSION" == "5.5" ]; then - PROFILE=tzda_5.5_arm-kantm - fi + PROFILE=tzda_5.5_arm-kantm elif [[ $platform == "wearable" ]]; then - if [ "$DEFAULT_TIZEN_VERSION" == "5.5" ]; then - PROFILE=tzwr_5.5_spin - fi + PROFILE=tzwr_5.5_arm-spin else echo "Cannot set default PROFILE for platform=${platform}" exit 1 diff --git a/tizen/build/gbs.conf.in b/tizen/build/gbs.conf.in index c97b0ec..a25b8c4 100755 --- a/tizen/build/gbs.conf.in +++ b/tizen/build/gbs.conf.in @@ -40,7 +40,7 @@ passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== [profile.tz_standard] obs = obs.tizen repos = repo.public_base_standard, repo.tz_standard -buildroot = ~/GBS-ROOT-M69-TZ_STANDARD +buildroot = ~/GBS-ROOT-WRTJS-TZ_STANDARD ############################################### # @@ -49,7 +49,7 @@ buildroot = ~/GBS-ROOT-M69-TZ_STANDARD [profile.tz_emulator] obs = obs.tizen repos = repo.public_base_standard, repo.tz_emulator -buildroot = ~/GBS-ROOT-M69-TZ_EMULATOR +buildroot = ~/GBS-ROOT-WRTJS-TZ_EMULATOR ############################################### # @@ -58,7 +58,7 @@ buildroot = ~/GBS-ROOT-M69-TZ_EMULATOR [profile.tz_standard_mirror] obs = obs.tizen repos = repo.public_base_standard_mirror, repo.tz_standard_mirror -buildroot = ~/GBS-ROOT-M69-TZ_STANDARD-TIZEN_LATEST-RELEASE +buildroot = ~/GBS-ROOT-WRTJS-TZ_STANDARD ############################################### # @@ -67,7 +67,7 @@ buildroot = ~/GBS-ROOT-M69-TZ_STANDARD-TIZEN_LATEST-RELEASE [profile.tz_emulator_mirror] obs = obs.tizen repos = repo.public_base_standard, repo.tz_emulator_mirror -buildroot = ~/GBS-ROOT-M69-TZ_EMULATOR-TIZEN_LATEST-RELEASE +buildroot = ~/GBS-ROOT-WRTJS-TZ_EMULATOR ############################################### # @@ -86,9 +86,9 @@ url = http://165.213.149.200/download/snapshots/tizen/base-wearable/latest/repos # # Tizen v5.5 spin Wearable (armv7l) # -[profile.tzwr_5.5_spin] +[profile.tzwr_5.5_arm-spin] repos = repo.wearable_product_5.5_base, repo.wearable_product_5.5 -buildroot = ~/GBS-ROOT-M69-TZWR_5.5_SPIN-TIZEN_LATEST-RELEASE +buildroot = ~/GBS-ROOT-WRTJS-TZWR_5.5_SPIN-TIZEN_LATEST-RELEASE user = blinkbot passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== @@ -123,6 +123,25 @@ url = https://168.219.243.64/api ############################################ # +# Tizen v6.0 for product tv (NikeM armv7l) +# +[profile.tztv_6.0_arm-nikem] +obs = obs.tizen_product_tv +repos = repo.tv_product_6.0_nikem, repo.tv_product_6.0_base +buildroot = ~/GBS-ROOT-WRTJS-TZTV_6.0_ARM-NIKEM-TIZEN_LATEST-RELEASE + +[repo.tv_product_6.0_base] +url = http://168.219.244.109/base/current/standard/latest/repos/base/armv7l/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== + +[repo.tv_product_6.0_nikem] +url = http://168.219.244.109/products/tv/archive/current/ONEMAIN/NikeM/latest/repos/product/armv7l/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== + +############################################ +# # Tizen v5.5 for product tv (NikeM armv7l) # [profile.tztv_5.5_arm-nikem] -- 2.7.4 From 255f03c26806a1dd56b065685c22e8c78b3f47a4 Mon Sep 17 00:00:00 2001 From: liwei Date: Tue, 25 Feb 2020 14:30:45 +0800 Subject: [PATCH 12/16] [VD] Check file protocol using file format In current logic, WRT use url format to check file protocol, if file path including special character(ex. blank/?/+/...), it will be converted to special code(blank-> %20, #->%23,...), so we should use file format to check file exist or not. ex. /opt/media/USBDriveA1/bts/1/Fulfill%20mentGustav_Klimt.jpg we should change it to file format /opt/media/USBDriveA1/bts/1/Fulfill mentGustav_Klimt.jpg otherwise, this image can not be shown. Change-Id: If159c68d74f12d4a68b8cacf182e3c4f75f4ad3b Signed-off-by: liwei --- wrt_app/src/web_application.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 wrt_app/src/web_application.js diff --git a/wrt_app/src/web_application.js b/wrt_app/src/web_application.js old mode 100755 new mode 100644 index 5429050..5cfafa0 --- a/wrt_app/src/web_application.js +++ b/wrt_app/src/web_application.js @@ -146,7 +146,7 @@ class WebApplication { protocol.interceptFileProtocol('file', (request, callback) => { if (request.url) { let access_path, parsed_info = new URL(request.url); - access_path = parsed_info.host + parsed_info.pathname; + access_path = parsed_info.host + decodeURI(parsed_info.pathname); console.log(`check path: : ${access_path}`); for (let p in self.accessiblePath) { if (access_path.startsWith(self.accessiblePath[p])) { -- 2.7.4 From a1349f225c39ccfb2922479d65c04be840f66d10 Mon Sep 17 00:00:00 2001 From: Youngsoo Choi Date: Thu, 2 Jan 2020 23:49:01 -0800 Subject: [PATCH 13/16] [M76 Migration][Service][Global] Support multiple connections This supports multiple connections between ui apps and service apps. Reference: https://review.tizen.org/gerrit/221517/ Change-Id: I383592399b89a8eef22d7a06aadb08c5ca27f736 Signed-off-by: Youngsoo Choi --- wrt_app/service/main.js | 60 ++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/wrt_app/service/main.js b/wrt_app/service/main.js index f6350de..a37e977 100755 --- a/wrt_app/service/main.js +++ b/wrt_app/service/main.js @@ -24,26 +24,26 @@ const XWalkExtension = require('../common/wrt_xwalk_extension'); var sandbox = []; var sandbox_count = 0; +var service_source = []; -wrt.on('start-service', (event, app_id, permissions) => { - console.log('start service app : ' + app_id + ', permissions : ' + permissions); - new XWalkExtension(); - if (sandbox[app_id] === undefined) { +wrt.on('start-service', (event, internal_id, permissions) => { + console.log('start service app : ' + internal_id + ', permissions : ' + permissions); + if (sandbox[internal_id] === undefined) { if (sandbox_count === 0) { new XWalkExtension(); } sandbox_count++; const Module = require('module'); - sandbox[app_id] = { + sandbox[internal_id] = { console: console, module: new Module, require: require, tizen: tizen, }; - let access_control_manager = new AccessControlManager(permissions, sandbox[app_id]); + let access_control_manager = new AccessControlManager(permissions, sandbox[internal_id]); access_control_manager.initialize(); - for(let key in global) { - sandbox[app_id][key] = global[key]; + for (let key in global) { + sandbox[internal_id][key] = global[key]; } let standard_object_list = [ Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError, Number, BigInt, Math, Date, @@ -56,36 +56,44 @@ wrt.on('start-service', (event, app_id, permissions) => { WebAssembly.Table, WebAssembly.CompileError, WebAssembly.LinkError, WebAssembly.RuntimeError, Boolean, Function, Object, Symbol ]; for (let idx in standard_object_list) { - sandbox[app_id][standard_object_list[idx].name] = standard_object_list[idx]; + sandbox[internal_id][standard_object_list[idx].name] = standard_object_list[idx]; } - let options = { filename: app_id }; - vm.runInNewContext(wrt.readService(app_id), sandbox[app_id], options); + let options = { filename: internal_id }; + let service_id = internal_id.substr(0, internal_id.indexOf(":")); + let terminate_service_client_process = false; + if (service_source[service_id] === undefined) { + service_source[service_id] = wrt.readService(internal_id); + terminate_service_client_process = true; + } + vm.runInNewContext(service_source[service_id], sandbox[internal_id], options); - if (!wrt.terminateClient(app_id)) { - console.log('Failed to terminate client process'); + if (terminate_service_client_process) { + if (!wrt.terminateServiceClientProcess(internal_id)) { + console.log('Failed to terminate client process'); + } } } - if (sandbox[app_id]['started'] === undefined) { - sandbox[app_id]['started'] = true; - sandbox[app_id]['stopped'] = undefined; + if (sandbox[internal_id]['started'] === undefined) { + sandbox[internal_id]['started'] = true; + sandbox[internal_id]['stopped'] = undefined; const start_callback_string = 'if (module.exports.onStart !== undefined) { module.exports.onStart(); }'; - vm.runInContext(start_callback_string, sandbox[app_id]); + vm.runInContext(start_callback_string, sandbox[internal_id]); } const request_callback_string = 'if (module.exports.onRequest !== undefined) { module.exports.onRequest(); }'; - vm.runInContext(request_callback_string, sandbox[app_id]); + vm.runInContext(request_callback_string, sandbox[internal_id]); }); -wrt.on('stop-service', (event, app_id) => { - if (sandbox[app_id]['stopped'] === undefined) { +wrt.on('stop-service', (event, internal_id) => { + if (sandbox[internal_id]['stopped'] === undefined) { sandbox_count--; - sandbox[app_id]['stopped'] = true; - sandbox[app_id]['started'] = undefined; + sandbox[internal_id]['stopped'] = true; + sandbox[internal_id]['started'] = undefined; const stop_callback_string = 'if (module.exports.onStop !== undefined) { module.exports.onStop(); }'; - vm.runInContext(stop_callback_string, sandbox[app_id]); - for(let key in sandbox[app_id]) { - delete sandbox[app_id][key]; + vm.runInContext(stop_callback_string, sandbox[internal_id]); + for(let key in sandbox[internal_id]) { + delete sandbox[internal_id][key]; } - delete sandbox[app_id]; + delete sandbox[internal_id]; if (sandbox_count === 0) { tizen = null; } -- 2.7.4 From 5517f3b950acfc7310d1782571b7091b94c61378 Mon Sep 17 00:00:00 2001 From: "k2.nagaraju" Date: Tue, 28 Jan 2020 18:51:39 +0530 Subject: [PATCH 14/16] [M76 Migration][Service][Global] Fix Failure of Onstop This guarantees success callback of start API can be called when launching process is completely finished. Reference: https://review.tizen.org/gerrit/223323/ Change-Id: I56c2bc28501a94f9bffc4f499b94b54c622ca61f Signed-off-by: k2.nagaraju --- wrt_app/service/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/wrt_app/service/main.js b/wrt_app/service/main.js index a37e977..3ae77a6 100755 --- a/wrt_app/service/main.js +++ b/wrt_app/service/main.js @@ -78,6 +78,7 @@ wrt.on('start-service', (event, internal_id, permissions) => { sandbox[internal_id]['stopped'] = undefined; const start_callback_string = 'if (module.exports.onStart !== undefined) { module.exports.onStart(); }'; vm.runInContext(start_callback_string, sandbox[internal_id]); + wrt.finishStartingService(internal_id); } const request_callback_string = 'if (module.exports.onRequest !== undefined) { module.exports.onRequest(); }'; vm.runInContext(request_callback_string, sandbox[internal_id]); -- 2.7.4 From bdcbd9c096c170b82b24b62c2eee586a016bb4ad Mon Sep 17 00:00:00 2001 From: Youngsoo Choi Date: Tue, 10 Mar 2020 02:29:17 -0700 Subject: [PATCH 15/16] [Product TV] Update Nikem gbs repository The Nikem gbs repository has been updated. Change-Id: I470c1fc84e57f79f118cea74f005834b9e35daa2 Signed-off-by: Youngsoo Choi --- tizen/build/gbs.conf.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tizen/build/gbs.conf.in b/tizen/build/gbs.conf.in index a25b8c4..93e23ff 100755 --- a/tizen/build/gbs.conf.in +++ b/tizen/build/gbs.conf.in @@ -131,12 +131,12 @@ repos = repo.tv_product_6.0_nikem, repo.tv_product_6.0_base buildroot = ~/GBS-ROOT-WRTJS-TZTV_6.0_ARM-NIKEM-TIZEN_LATEST-RELEASE [repo.tv_product_6.0_base] -url = http://168.219.244.109/base/current/standard/latest/repos/base/armv7l/packages/ +url = http://168.219.244.109/tizen-rsa/tizen-6.0-base/standard/latest/ user = blinkbot passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== [repo.tv_product_6.0_nikem] -url = http://168.219.244.109/products/tv/archive/current/ONEMAIN/NikeM/latest/repos/product/armv7l/packages/ +url = http://168.219.244.109/hijacks/PRECEDENCE/20_Tizen_6.0_Integration/latest user = blinkbot passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== -- 2.7.4 From cf2e284767f93805873f291a9dffc73853d8647c Mon Sep 17 00:00:00 2001 From: Youngsoo Choi Date: Mon, 9 Mar 2020 05:35:03 -0700 Subject: [PATCH 16/16] [Service] Refactor loading procedure for extension plugins The plugins.json is copied to tizen-extensions-crosswalk-service to be referred by extension loader. Note that this doesn't include plugins.json for release product tv to avoid conflicts with legacy wrt-service. Change-Id: I63e4aba3028db3398e0451a37d61dd19007eb35b Signed-off-by: Youngsoo Choi --- wrt_app/common/extensions.json => packaging/plugins.json | 0 packaging/wrtjs.spec | 11 +++++++++++ tizen/build/common.sh | 12 +++++++++--- wrt_app/common/wrt_xwalk_extension.js | 10 ++-------- 4 files changed, 22 insertions(+), 11 deletions(-) rename wrt_app/common/extensions.json => packaging/plugins.json (100%) diff --git a/wrt_app/common/extensions.json b/packaging/plugins.json similarity index 100% rename from wrt_app/common/extensions.json rename to packaging/plugins.json diff --git a/packaging/wrtjs.spec b/packaging/wrtjs.spec index 9d24b2f..1511dcc 100755 --- a/packaging/wrtjs.spec +++ b/packaging/wrtjs.spec @@ -7,6 +7,10 @@ License: Apache-2.0 URL: https://www.tizen.org Source: %{name}-%{version}.tar.gz +%if "%{?profile}" != "tv" || "%{?_local_build}" == "1" +%define crosswalk_extensions_service tizen-extensions-crosswalk-service +%endif + %if "%{?tizen_profile_name}" != "tv" BuildRequires: ninja BuildRequires: pkgconfig(dlog) @@ -45,6 +49,10 @@ install -d %{buildroot}%{_resourcedir} %endif %endif %endif +%if "%{?profile}" != "tv" || "%{?_local_build}" == "1" + mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions_service} + cp packaging/plugins.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service} +%endif cp -r wrt_app/* %{buildroot}%{_resourcedir}/ %post @@ -65,4 +73,7 @@ rm -fr %{buildroot} %if "%{_vd_cfg_product_type}" != "LFD" %{_datadir}/aul/wrt.loader %endif +%if "%{?profile}" != "tv" || "%{?_local_build}" == "1" + %{_libdir}/%{crosswalk_extensions_service}/plugins.json +%endif %{_resourcedir}/* diff --git a/tizen/build/common.sh b/tizen/build/common.sh index 806ed5d..e3c3137 100755 --- a/tizen/build/common.sh +++ b/tizen/build/common.sh @@ -32,6 +32,7 @@ function setupAndExecuteTargetBuild() { local PROFILE local ARCHITECTURE local CONF_FLAG + local LOCAL_BUILD=1 local -a ARGS # "|| :" means "or always succeeding built-in command" @@ -39,9 +40,7 @@ function setupAndExecuteTargetBuild() { ARCHITECTURE=$(echo "$@" | grep -Po "(?<=\-A\s)[^\s]*" | uniq || :) GBS_ROOT=$(echo "$@" | grep -Po "(?<=\-B\s)[^\s]*" | uniq || :) - local count=0 while [[ $# > 0 ]]; do - count=$(( $count + 1 )) case "$1" in --standard*) PROFILE=tz_$(echo $1 | sed 's/--//g') @@ -49,15 +48,22 @@ function setupAndExecuteTargetBuild() { --emulator*) PROFILE=tz_$(echo $1 | sed 's/--//g') ;; + --release) + LOCAL_BUILD=0 + ;; --tizen*) ;; *) - ARGS[$count]="$1" + ARGS+=("$1") ;; esac shift; done + if [ "$LOCAL_BUILD" == "1" ]; then + ARGS+=(--define "_local_build 1") + fi + if [ "$PROFILE" == "" ]; then if [[ $platform == "tv" ]]; then PROFILE=tztv_6.0_arm-nikem diff --git a/wrt_app/common/wrt_xwalk_extension.js b/wrt_app/common/wrt_xwalk_extension.js index 86a6575..d04b65f 100644 --- a/wrt_app/common/wrt_xwalk_extension.js +++ b/wrt_app/common/wrt_xwalk_extension.js @@ -21,18 +21,12 @@ var extensions_ = {}; class XWalkExtension { constructor() { - let plugins = require('./extensions.json'); - const binding = process.wrtBinding('wrt_xwalk_extension') var extensions = binding.getExtensions(); for (var i = 0; i < extensions.length; i++) { extensions[i].loaded = false; - for (var idx in plugins) { - if (extensions[i].name === plugins[idx].name) { - console.log("Load extension : " + extensions[i].name); - extensions_[extensions[i].name] = extensions[i]; - } - } + console.log("Load extension : " + extensions[i].name); + extensions_[extensions[i].name] = extensions[i]; } for (var name in extensions_) { if (!extensions_[name].use_trampoline) { -- 2.7.4