17c804472Sopenharmony_ci/* 27c804472Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47c804472Sopenharmony_ci * you may not use this file except in compliance with the License. 57c804472Sopenharmony_ci * You may obtain a copy of the License at 67c804472Sopenharmony_ci * 77c804472Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87c804472Sopenharmony_ci * 97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c804472Sopenharmony_ci * See the License for the specific language governing permissions and 137c804472Sopenharmony_ci * limitations under the License. 147c804472Sopenharmony_ci */ 157c804472Sopenharmony_ci 167c804472Sopenharmony_ci#include "JsApp.h" 177c804472Sopenharmony_ci#include <algorithm> 187c804472Sopenharmony_ci#include <sstream> 197c804472Sopenharmony_ci#include <cstdio> 207c804472Sopenharmony_ci#include "FileSystem.h" 217c804472Sopenharmony_ci#include "PreviewerEngineLog.h" 227c804472Sopenharmony_ci 237c804472Sopenharmony_cistatic std::vector<std::string> liteDevice = {"liteWearable", "smartVision"}; 247c804472Sopenharmony_ci 257c804472Sopenharmony_ciJsApp::JsApp() 267c804472Sopenharmony_ci : pipeName(""), 277c804472Sopenharmony_ci pipePort(""), 287c804472Sopenharmony_ci jsAppPath(""), 297c804472Sopenharmony_ci bundleName("undefined"), 307c804472Sopenharmony_ci urlPath(""), 317c804472Sopenharmony_ci isFinished(true), 327c804472Sopenharmony_ci isRunning(true), 337c804472Sopenharmony_ci isDebug(false), 347c804472Sopenharmony_ci debugServerPort(0), 357c804472Sopenharmony_ci jsHeapSize(0), 367c804472Sopenharmony_ci colorMode(""), 377c804472Sopenharmony_ci orientation(""), 387c804472Sopenharmony_ci aceVersion(""), 397c804472Sopenharmony_ci screenDensity(""), 407c804472Sopenharmony_ci configChanges("") 417c804472Sopenharmony_ci{ 427c804472Sopenharmony_ci} 437c804472Sopenharmony_ci 447c804472Sopenharmony_civoid JsApp::Stop() 457c804472Sopenharmony_ci{ 467c804472Sopenharmony_ci ILOG("JsApp::Stop start stop js app."); 477c804472Sopenharmony_ci auto start = std::chrono::system_clock::now(); 487c804472Sopenharmony_ci while (!isFinished) { 497c804472Sopenharmony_ci Interrupt(); 507c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(1)); 517c804472Sopenharmony_ci auto end = std::chrono::system_clock::now(); 527c804472Sopenharmony_ci auto passedSecond = std::chrono::duration_cast<std::chrono::seconds>(end - start).count(); 537c804472Sopenharmony_ci if (passedSecond > 10) { // The restart timeout interval is 10 seconds. 547c804472Sopenharmony_ci ILOG("Restart js app time out!"); 557c804472Sopenharmony_ci return; 567c804472Sopenharmony_ci } 577c804472Sopenharmony_ci } 587c804472Sopenharmony_ci ILOG("JsApp::Stop js app stop finished."); 597c804472Sopenharmony_ci} 607c804472Sopenharmony_ci 617c804472Sopenharmony_civoid JsApp::Interrupt() {} 627c804472Sopenharmony_ci 637c804472Sopenharmony_cibool JsApp::IsLiteDevice(std::string deviceType) 647c804472Sopenharmony_ci{ 657c804472Sopenharmony_ci auto iter = find(liteDevice.begin(), liteDevice.end(), deviceType); 667c804472Sopenharmony_ci if (iter == liteDevice.end()) { 677c804472Sopenharmony_ci return false; 687c804472Sopenharmony_ci } 697c804472Sopenharmony_ci return true; 707c804472Sopenharmony_ci} 717c804472Sopenharmony_ci 727c804472Sopenharmony_civoid JsApp::SetPipeName(const std::string& name) 737c804472Sopenharmony_ci{ 747c804472Sopenharmony_ci pipeName = name; 757c804472Sopenharmony_ci} 767c804472Sopenharmony_ci 777c804472Sopenharmony_civoid JsApp::SetPipePort(const std::string& port) 787c804472Sopenharmony_ci{ 797c804472Sopenharmony_ci pipePort = port; 807c804472Sopenharmony_ci} 817c804472Sopenharmony_ci 827c804472Sopenharmony_civoid JsApp::SetJsAppPath(const std::string& value) 837c804472Sopenharmony_ci{ 847c804472Sopenharmony_ci jsAppPath = value; 857c804472Sopenharmony_ci} 867c804472Sopenharmony_ci 877c804472Sopenharmony_civoid JsApp::SetScreenDensity(const std::string value) 887c804472Sopenharmony_ci{ 897c804472Sopenharmony_ci screenDensity = value; 907c804472Sopenharmony_ci} 917c804472Sopenharmony_ci 927c804472Sopenharmony_civoid JsApp::SetConfigChanges(const std::string value) 937c804472Sopenharmony_ci{ 947c804472Sopenharmony_ci configChanges = value; 957c804472Sopenharmony_ci} 967c804472Sopenharmony_ci 977c804472Sopenharmony_civoid JsApp::SetUrlPath(const std::string& value) 987c804472Sopenharmony_ci{ 997c804472Sopenharmony_ci urlPath = value; 1007c804472Sopenharmony_ci} 1017c804472Sopenharmony_ci 1027c804472Sopenharmony_civoid JsApp::SetBundleName(const std::string& name) 1037c804472Sopenharmony_ci{ 1047c804472Sopenharmony_ci bundleName = name; 1057c804472Sopenharmony_ci FileSystem::SetBundleName(name); 1067c804472Sopenharmony_ci FileSystem::MakeVirtualFileSystemPath(); 1077c804472Sopenharmony_ci} 1087c804472Sopenharmony_ci 1097c804472Sopenharmony_civoid JsApp::SetRunning(bool flag) 1107c804472Sopenharmony_ci{ 1117c804472Sopenharmony_ci isRunning = flag; 1127c804472Sopenharmony_ci} 1137c804472Sopenharmony_ci 1147c804472Sopenharmony_cibool JsApp::GetRunning() 1157c804472Sopenharmony_ci{ 1167c804472Sopenharmony_ci return isRunning; 1177c804472Sopenharmony_ci} 1187c804472Sopenharmony_ci 1197c804472Sopenharmony_civoid JsApp::SetIsDebug(bool value) 1207c804472Sopenharmony_ci{ 1217c804472Sopenharmony_ci isDebug = value; 1227c804472Sopenharmony_ci} 1237c804472Sopenharmony_ci 1247c804472Sopenharmony_civoid JsApp::SetDebugServerPort(uint16_t value) 1257c804472Sopenharmony_ci{ 1267c804472Sopenharmony_ci debugServerPort = value; 1277c804472Sopenharmony_ci} 1287c804472Sopenharmony_ci 1297c804472Sopenharmony_civoid JsApp::SetJSHeapSize(uint32_t size) 1307c804472Sopenharmony_ci{ 1317c804472Sopenharmony_ci jsHeapSize = size; 1327c804472Sopenharmony_ci} 1337c804472Sopenharmony_ci 1347c804472Sopenharmony_cistd::string JsApp::GetJSONTree() 1357c804472Sopenharmony_ci{ 1367c804472Sopenharmony_ci return ""; 1377c804472Sopenharmony_ci} 1387c804472Sopenharmony_ci 1397c804472Sopenharmony_cistd::string JsApp::GetDefaultJSONTree() 1407c804472Sopenharmony_ci{ 1417c804472Sopenharmony_ci return ""; 1427c804472Sopenharmony_ci} 1437c804472Sopenharmony_ci 1447c804472Sopenharmony_civoid JsApp::SetArgsColorMode(const std::string& value) 1457c804472Sopenharmony_ci{ 1467c804472Sopenharmony_ci colorMode = value; 1477c804472Sopenharmony_ci} 1487c804472Sopenharmony_ci 1497c804472Sopenharmony_civoid JsApp::SetArgsAceVersion(const std::string& value) 1507c804472Sopenharmony_ci{ 1517c804472Sopenharmony_ci aceVersion = value; 1527c804472Sopenharmony_ci} 1537c804472Sopenharmony_ci 1547c804472Sopenharmony_civoid JsApp::ColorModeChanged(const std::string commandColorMode) 1557c804472Sopenharmony_ci{ 1567c804472Sopenharmony_ci colorMode = commandColorMode; 1577c804472Sopenharmony_ci} 1587c804472Sopenharmony_ci 1597c804472Sopenharmony_cistd::string JsApp::GetColorMode() const 1607c804472Sopenharmony_ci{ 1617c804472Sopenharmony_ci return colorMode; 1627c804472Sopenharmony_ci} 1637c804472Sopenharmony_ci 1647c804472Sopenharmony_cistd::string JsApp::GetOrientation() const 1657c804472Sopenharmony_ci{ 1667c804472Sopenharmony_ci return orientation; 1677c804472Sopenharmony_ci} 1687c804472Sopenharmony_ci 1697c804472Sopenharmony_civoid JsApp::OrientationChanged(std::string commandOrientation) 1707c804472Sopenharmony_ci{ 1717c804472Sopenharmony_ci orientation = commandOrientation; 1727c804472Sopenharmony_ci} 1737c804472Sopenharmony_ci 1747c804472Sopenharmony_civoid JsApp::ResolutionChanged(ResolutionParam&, int32_t, std::string) {} 1757c804472Sopenharmony_ci 1767c804472Sopenharmony_civoid JsApp::ReloadRuntimePage(const std::string) {} 1777c804472Sopenharmony_ci 1787c804472Sopenharmony_cibool JsApp::MemoryRefresh(const std::string) const 1797c804472Sopenharmony_ci{ 1807c804472Sopenharmony_ci return false; 1817c804472Sopenharmony_ci} 1827c804472Sopenharmony_ci 1837c804472Sopenharmony_civoid JsApp::LoadDocument(const std::string, const std::string, const Json2::Value&) {} 1847c804472Sopenharmony_ci 1857c804472Sopenharmony_civoid JsApp::FoldStatusChanged(const std::string commandFoldStatus, 1867c804472Sopenharmony_ci int32_t currentWidth, int32_t currentHeight) {} 1877c804472Sopenharmony_ci 1887c804472Sopenharmony_civoid JsApp::SetAvoidArea(const AvoidAreas& areas) {} 1897c804472Sopenharmony_ci 1907c804472Sopenharmony_ciconst AvoidAreas JsApp::GetCurrentAvoidArea() const 1917c804472Sopenharmony_ci{ 1927c804472Sopenharmony_ci AvoidAreas areas; 1937c804472Sopenharmony_ci return areas; 1947c804472Sopenharmony_ci} 1957c804472Sopenharmony_ci 1967c804472Sopenharmony_civoid JsApp::InitJsApp() {}