From: Chunling Ye Date: Mon, 26 May 2025 03:04:25 +0000 (+0800) Subject: [WRTjs][Service] Remove the built-in service X-Git-Tag: accepted/tizen/unified/20250613.092059~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c277a6fc30afe6357ef3e139550af755e059d59;p=platform%2Fframework%2Fweb%2Fwrtjs.git [WRTjs][Service] Remove the built-in service wrt related patch: https://review.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/324760 Change-Id: I307168a0d1930a92f2872f0f47674e6d5624de5f Signed-off-by: Chunling Ye --- diff --git a/wrt_app/service/builtins/appmanifest_loader.ts b/wrt_app/service/builtins/appmanifest_loader.ts deleted file mode 100644 index 40bd03b4..00000000 --- a/wrt_app/service/builtins/appmanifest_loader.ts +++ /dev/null @@ -1,199 +0,0 @@ -import '../../common/init'; -import { isMainThread, workerData } from 'worker_threads'; -import { wrt } from '../../browser/wrt'; -import { URL } from 'url'; -import * as fs from 'fs'; -import * as https from 'https'; -import * as XWalkExtension from '../../common/wrt_xwalk_extension'; - -function getManifestFile(manifestUrl: string) { - console.debug('manifestUrl : '+manifestUrl); - return new Promise((resolve, reject) => { - const req = https.request(manifestUrl, (res) => { - res.setEncoding('utf8'); - let responseBody = ''; - res.on('data', (data) => { - responseBody += data; - }); - res.on('end', () => { - resolve(JSON.parse(responseBody)); - }); - }).on('error', (err) => { - console.debug(`error : ${err}`); - reject(err); - }); - req.end(); - }); -} - -async function downloadIcon(iconSrc: string, iconFile: string) { - console.debug('iconSrc : ' + iconSrc); - return new Promise((resolve, reject) => { - const req = https.request(iconSrc, (res) => { - const Stream = require('stream').Transform; - let data = new Stream(); - res.on('data', (chunk) => { - data.push(chunk); - }); - res.on('end', () => { - fs.writeFileSync(iconFile, data.read()); - resolve('done'); - }); - }).on('error', (err) => { - console.debug(`error : ${err}`); - reject(err); - }); - req.end(); - }); -} - -function makeFileSync(file: string, data: string) { - fs.writeFileSync(file, data); -} - -function concatWithBaseUrl(path: string, baseUrl: string) { - if (path.substr(0, 1) === '/') { - const url = new URL(path, baseUrl); - return url.toString(); - } else if (path.indexOf('http:') == -1 && path.indexOf('https:') == -1) { - return baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1) + path; - } - return path; -} - -let baseWorkingDir = '/home/owner/content/Downloads/AppManifest'; -let downloadVirtualDir = 'downloads/AppManifest'; -let iconFile: string = ''; -let iconName: string = ''; -let manifestFile: string = ''; -let convertedConfigXml: string = ''; -let refCount: number = 0; - -function getAppName(appName: string) { - appName = appName.replace(/ /g, ''); - console.debug('appName : ' + appName); - return appName; -} - -function makeWorkingFolder(appName: string) { - let workingDir = `${baseWorkingDir}/${appName}`; - fs.rmdirSync(workingDir, { recursive: true }); - fs.mkdir(workingDir, { recursive: true }, (err) => { - if (err) - console.debug(`mkdir error : ${err}`) - }); -} - -async function handleIcon(appName: string, manifestUrl: string, manifest: any) { - let lengthOfIcons = manifest['icons'].length; - let lastIcon = manifest['icons'][lengthOfIcons - 1]; - let iconSrc = concatWithBaseUrl(lastIcon['src'], manifestUrl); - iconName = iconSrc.substr(iconSrc.lastIndexOf('/') + 1); - iconFile = `${baseWorkingDir}/${appName}/${iconName}`; - await downloadIcon(iconSrc, iconFile); - iconFile = `${downloadVirtualDir}/${appName}/${iconName}`; - refCount++; -} - -function makeManifestFile(appName: string, manifest: any) { - manifestFile = `${baseWorkingDir}/${appName}/appmanifest.json`; - makeFileSync(manifestFile, JSON.stringify(manifest)); - manifestFile = `${downloadVirtualDir}/${appName}/appmanifest.json`; - refCount++; -} - -function makePkgId(startUrl: string) { - let id = Buffer.from(startUrl).toString('base64'); - id = id.replace(/=/gi, ''); - console.debug(`id : ${id}`); - return id.substr(-10); -} - -function convertConfigXml(appName: string, startUrl: string) { - convertedConfigXml = `${baseWorkingDir}/${appName}/config.xml`; - let id = makePkgId(startUrl); - let configXml = ``; - configXml += ``; - configXml += ``; - configXml += `` - configXml += ``; - configXml += `${appName}`; - configXml += ``; - configXml += ``; - makeFileSync(convertedConfigXml, configXml); - convertedConfigXml = `${downloadVirtualDir}/${appName}/config.xml`; - refCount++; -} - -function cleanUpAndQuit(appName: string) { - let workingDir = `${baseWorkingDir}/${appName}`; - fs.rmdirSync(workingDir, { recursive: true }); - process.exit(); -} - -function installWgt(appName: string) { - let wgtPath = `${baseWorkingDir}/${appName}/${appName}.wgt`; - let installinfo = "{\"app_id\":\"" + appName + "\",\"pkg_path\":\"" + wgtPath + "\"}"; - console.debug(`installWgt info: ${installinfo}`); - (wrt.tv as any).notifyInstall(installinfo); - process.exit(); -} - -function makeWgt(appName: string) { - let wgtPath = `${downloadVirtualDir}/${appName}/${appName}.wgt`; - let onArchive = (archive: any) => { - function progressCallback(opId: string, val: number, name: any) { - console.debug('opId: ' + opId + ' with progress val: ' + (val * 100).toFixed(0) + '%'); - } - function successCallback() { - console.debug(`File added : ${refCount}`); - refCount--; - if (!refCount) { - installWgt(appName); - } - } - console.debug(`convertedConfigXml : ${convertedConfigXml}`); - console.debug(`manifestFile : ${manifestFile}`); - console.debug(`iconFile : ${iconFile}`); - let defaultArchiveFileEntryOption = { destination:'', stripSourceDirectory: true}; - archive.add(convertedConfigXml, successCallback, null, progressCallback, defaultArchiveFileEntryOption); - archive.add(manifestFile, successCallback, null, progressCallback, defaultArchiveFileEntryOption); - if (iconFile) - archive.add(iconFile, successCallback, null, progressCallback, defaultArchiveFileEntryOption); - } - global.tizen.archive.open(wgtPath, 'w', onArchive, () => { }, { overwrite: true }); -} - -async function parseAndHandleManifest(manifestUrl: string) { - let manifest: any = await getManifestFile(manifestUrl); - let appName = getAppName(manifest['name']); - try { - makeWorkingFolder(appName); - if (manifest['icons']) { - await handleIcon(appName, manifestUrl, manifest); - } - if (manifest['start_url']) { - let startUrl = concatWithBaseUrl(manifest['start_url'], manifestUrl); - manifest['start_url'] = startUrl; - - makeManifestFile(appName, manifest); - convertConfigXml(appName, startUrl); - } - makeWgt(appName); - } catch (e) { - console.debug(`Exception: ${e}`); - cleanUpAndQuit(appName); - } -} - -export function run(manifestUrl: string) { - console.debug(`Appmanifest parser starts for ${manifestUrl}`); - setInterval(() => { }, 500); - wrt.tv?.delayShutdown(); - XWalkExtension.initialize(); - parseAndHandleManifest(manifestUrl); -} - -if (!isMainThread) { - run(decodeURIComponent(workerData.id)); -} diff --git a/wrt_app/service/builtins/wasm_builder.ts b/wrt_app/service/builtins/wasm_builder.ts deleted file mode 100644 index 3ec7fe83..00000000 --- a/wrt_app/service/builtins/wasm_builder.ts +++ /dev/null @@ -1,33 +0,0 @@ -import '../../common/init'; -import { isMainThread, workerData } from 'worker_threads'; -import { wrt } from '../../browser/wrt'; -import * as fs from 'fs'; - -function compileWasmForCaching(files: string[]) { - try { - files.forEach(async filePath => { - console.debug(`Requesting WASM compilation for building a cache, file_path:(${filePath})`); - let source = fs.readFileSync(filePath); - let file = new Uint8Array(source); - await WebAssembly.compileForCaching(file); - }); - } catch (e) { - console.error(`An error occurred while compiling a wasm module. error:(${e})`); - } -} - -export function run(appId: string) { - console.debug(`wasm_builder.js starts, app_id:(${appId})`); - let tv = wrt.tv as NativeWRTjs.TVExtension; - tv.setWasmFlags(); - tv.setDiskCache(appId); - let files = tv.getWasmFiles(appId); - console.debug(files); - tv.delayShutdown(); - compileWasmForCaching(files); - process.exit(); -} - -if (!isMainThread) { - run(workerData.id); -} diff --git a/wrt_app/service/main.ts b/wrt_app/service/main.ts index e1ff2430..bf2d1533 100755 --- a/wrt_app/service/main.ts +++ b/wrt_app/service/main.ts @@ -30,11 +30,6 @@ wrt.on('stop-service', (event: any, internalId: string) => { ServiceManager.stopService(internalId); }); -wrt.on('builtin-service', (event: any, internalId: string, serviceName: string) => { - console.debug(`id: ${internalId}, serviceName: ${serviceName}`); - ServiceManager.handleBuiltinService(internalId, serviceName); -}); - wrt.on('message', (event: any, type: string, data: string) => { console.debug(`onMessage : ${type} - ${data}`); ServiceManager.notifyMessage(type, data); diff --git a/wrt_app/service/service_manager.ts b/wrt_app/service/service_manager.ts index c74728e6..5c72e5bf 100644 --- a/wrt_app/service/service_manager.ts +++ b/wrt_app/service/service_manager.ts @@ -159,21 +159,6 @@ export function stopService(id: string) { terminateWorker(id, 500); } -export function handleBuiltinService(serviceId: string, serviceName: string) { - if (!serviceName) { - return; - } - let need_stop = (serviceName.substr(0, 5) === 'stop_'); - if (need_stop) { - console.debug(`${serviceName} will be terminated.`); - workers[serviceId].terminate(); - } else { - console.debug(`Builtin service is ${serviceName}`); - let startService = `${__dirname}/../service/builtins/${serviceName}.js`; - createWorker(serviceId, startService, ''); - } -} - export function notifyMessage(listener: string, data: string) { for (const id in messageObservers) { if (messageObservers[id].has(listener)) { diff --git a/wrt_app/webpack.config.js b/wrt_app/webpack.config.js index feb07bed..69787196 100644 --- a/wrt_app/webpack.config.js +++ b/wrt_app/webpack.config.js @@ -16,8 +16,6 @@ module.exports = { 'addon/renderer/addonapi': path.resolve(__dirname, 'addon', 'renderer', 'addonapi.ts'), 'browser/init': path.resolve(__dirname, 'browser', 'init.ts'), 'renderer/init': path.resolve(__dirname, 'renderer', 'init.ts'), - 'service/builtins/appmanifest_loader': path.resolve(__dirname, 'service', 'builtins', 'appmanifest_loader.ts'), - 'service/builtins/wasm_builder': path.resolve(__dirname, 'service', 'builtins', 'wasm_builder.ts'), 'service/main': path.resolve(__dirname, 'service', 'main.ts'), 'service/service_runner': path.resolve(__dirname, 'service', 'service_runner.ts'), 'src/runtime': path.resolve(__dirname, 'src', 'runtime.ts')