[WRTjs][VD] Skip boost main thread in backgroundexecution case and optimize log 97/324597/7
authorliwei90727 <wei90727.li@samsung.com>
Wed, 21 May 2025 08:07:14 +0000 (16:07 +0800)
committerBot Blink <blinkbot@samsung.com>
Fri, 30 May 2025 09:12:04 +0000 (09:12 +0000)
When app launch with backgroundExecution, app will run in background,
so WRT skip boost main thread in this case.

Then with patch https://review.tizen.org/gerrit/319403, WRT will not
boost main thread in preload or backgroundexection case, just boost
when app launch in foreground.

And optimize log for boost policy.

Change-Id: I063ae39bcce140a3a621bf7ba853fca8279fe455
Signed-off-by: liwei90727 <wei90727.li@samsung.com>
wrt/src/app/tv/wrt_main_delegate_tv.cc
wrt/src/app/tv/wrt_main_delegate_tv.h
wrt/src/app/wrt_content_main.cc
wrt/src/app/wrt_main_delegate.h
wrt/src/browser/tv/native_web_runtime_delegate_tv.cc
wrt/src/common/tv/wrt_thread_booster.cc
wrt/src/renderer/tv/wrt_renderer_client_tv.cc

index bfcaa39b466b6728e292b603c6c69810c1a39185..81e9f7a440084186975a2fa587591d385a6b8466 100644 (file)
 
 namespace wrt {
 
-const char* kPreloadTag = "http://samsung.com/appcontrol/data/launch_mode";
+const char* kLaunchModeTag = "http://samsung.com/appcontrol/data/launch_mode";
 const char* kPreloadVal =
     "UwAAAAEEAAAvAAAAaHR0cDovL3NhbXN1bmcuY29tL2FwcGNvbnRyb2wvZGF0YS9sYXVuY2hfbW"
     "9kZQAUAAAAYmFja2dyb3VuZEF0U3RhcnR1cAA=";
+const char* kBackgroundExcutionVal =
+    "UwAAAAEEAAAvAAAAaHR0cDovL3NhbXN1bmcuY29tL2FwcGNvbnRyb2wvZGF0YS9sYXVuY2hfbW"
+    "9kZQAUAAAAYmFja2dyb3VuZEV4ZWN1dGlvbgA=";
 
 namespace {
 
@@ -151,15 +154,6 @@ void InitializeBeforeRealLaunch() {
   native_runtime_tv.SetLocaleDir();
 }
 
-void CheckArguments(int argc, char** argv) {
-  for (int i = 1; i < argc; ++i) {
-    if (!strcmp(argv[i], "PayLoad") || !strcmp(argv[i], "PAYLOAD")) {
-      NativeWebRuntimeDelegateTV::GetInstance().SetPayloadData();
-      break;
-    }
-  }
-}
-
 void SetPriority(int absolute) {
   setpriority(PRIO_PROCESS, 0, absolute);
   LOG(INFO) << "Set process priority : " << absolute;
@@ -208,15 +202,11 @@ bool WRTMainDelegateTV::CheckPlatformReady(int argc, char** argv) {
   return CheckWindowManagerReady();
 }
 
-void WRTMainDelegateTV::BoostUpMainThread(int argc, char** argv) {
+void WRTMainDelegateTV::BoostUpMainThread() {
 #if defined(THREAD_BOOSTER_SERVICE)
-  for (int i = 1; i < argc; ++i) {
-    if (strncmp(argv[i], kPreloadTag, strlen(kPreloadTag)) == 0) {
-      if (strncmp(argv[i + 1], kPreloadVal, strlen(kPreloadVal)) == 0) {
-        LOG(INFO) << "preload app, just return";
-        return;
-      }
-    }
+  if (appcontrol_preload_ || appcontrol_background_execution_) {
+    LOG(INFO) << "preload or background execution app, just skip";
+    return;
   }
   WRT_thread_booster::GetInstance()->BoostUpByTid(gettid());
 #endif
@@ -388,6 +378,20 @@ void WRTMainDelegateTV::CreateReadyFile(const char* file_path) {
     LOG(INFO) << file_path << " create successfully";
 }
 
+void WRTMainDelegateTV::CheckArguments(int argc, char** argv) {
+  for (int i = 1; i < argc; ++i) {
+    std::string mode = argv[i];
+    if ((mode == "PayLoad") || (mode == "PAYLOAD")) {
+      NativeWebRuntimeDelegateTV::GetInstance().SetPayloadData();
+    } else if (mode == kLaunchModeTag) {
+      std::string launch_type = argv[i + 1];
+      appcontrol_preload_ = (launch_type == kPreloadVal) ? true : false;
+      appcontrol_background_execution_ =
+          (launch_type == kBackgroundExcutionVal) ? true : false;
+    }
+  }
+}
+
 ZoneFramework::ZoneFramework() {}
 
 ZoneFramework::~ZoneFramework() {
index 551b9a7b7b9056390f31a8cee9cfcffaa26bd955..5b5bcc873812a8e6099fab7644828def2cfd855b 100644 (file)
@@ -32,7 +32,7 @@ class WRTMainDelegateTV : public WRTMainDelegate {
   bool PreSetup() override;
   absl::optional<int> PostEarlyInitialization(InvokedIn invoked_in) override;
 
-  void BoostUpMainThread(int argc, char** argv) override;
+  void BoostUpMainThread() override;
 
   void ConfirmRunMode() override;
 
@@ -42,12 +42,17 @@ class WRTMainDelegateTV : public WRTMainDelegate {
   static void AdjustloaderPriority(const std::string& loader_work,
                                    const std::string& pre_dlopen_work);
 
+  void CheckArguments(int argc, char** argv);
+
   content::ContentBrowserClient* CreateContentBrowserClient() override;
   content::ContentRendererClient* CreateContentRendererClient() override;
 
 #if BUILDFLAG(USE_ALLOCATOR_SHIM)
   memory_system::MemorySystem memory_system_;
 #endif
+
+  bool appcontrol_preload_ = false;
+  bool appcontrol_background_execution_ = false;
 };
 
 }  // namespace wrt
index ce8b720fd3f23822a400d00beae15581164dec41..e5c917d1687cddb77fc6b2b1e42628dc9f6d029e 100644 (file)
@@ -224,7 +224,7 @@ int WRTContentMain::Main(int argc, char** argv) {
       Loader loader(this);
       return loader.Load(argc, argv);
     } else {
-      main_delegate_->BoostUpMainThread(argc, argv);
+      main_delegate_->BoostUpMainThread();
     }
     Initialize();
   }
index ac41cda786eaece0f0aaa8182b15c67e31d48a0a..ec9a56b00b1ec9addb48fedaef2a0ec1f54725b4 100644 (file)
@@ -31,7 +31,7 @@ class WRTMainDelegate : public electron::ElectronMainDelegate {
 
   virtual void ConfirmRunMode();
 
-  virtual void BoostUpMainThread(int argc, char** argv) {}
+  virtual void BoostUpMainThread() {}
 
  protected:
   // content::ContentMainDelegate:
index 80b1223db64e0d31e1afa97aa3205b44e02e6bcd..facd49ea0e9cbe54ebd82032fed50563d0ba0ecb 100644 (file)
@@ -331,7 +331,7 @@ void NativeWebRuntimeDelegateTV::BoostNetworkServiceThread() {
   if (IsLiteMemoryBoard() && GetCurrentSystemTime() > 500000)
     return;
 
-  LOG(INFO) << "boost NetworkService as RR";
+  LOG(INFO) << "register NetworkService thread as RR";
   WRT_thread_booster::GetInstance()->RegisterThreadByName("NetworkService");
 #endif
 }
index 7449ad56216f6adca62079fdf9421c0db264aab5..f523feda4b8e184b41db274dd6e8d38267fd0ba7 100644 (file)
@@ -46,9 +46,9 @@ void WRT_thread_booster::RegisterThreadByName(std::string name) {
 void WRT_thread_booster::BoostUpRegisteredThreads() {
   base::AutoLock lock(thread_list_lock);
   generic_info.event = BOOST_GENERIC_EVENT_START;
-  LOG(INFO) << "boost up registered all thread!";
+  LOG(INFO) << "start to boost up registed thread!";
   for (auto value : thread_list_) {
-    LOG(INFO) << "register boost up thread : " << value;
+    LOG(INFO) << "boost up registed thread : " << value;
     boost_request_by_thread_name(current_pid, value.c_str(),
         (const boost_info_t *)&generic_info);
   }
@@ -57,11 +57,11 @@ void WRT_thread_booster::BoostUpRegisteredThreads() {
 void WRT_thread_booster::BoostDownRegisteredThreads() {
   base::AutoLock lock(thread_list_lock);
   generic_info.event = BOOST_GENERIC_EVENT_STOP;
-  LOG(INFO) << "boost down registered thread!";
+  LOG(INFO) << "start to boost down registed thread!";
   for (auto value : thread_list_) {
     boost_request_by_thread_name(current_pid, value.c_str(),
         (const boost_info_t *)&generic_info);
-    LOG(INFO) << "register boost down thread : " << value;
+    LOG(INFO) << "boost down registed thread : " << value;
   }
 }
 
index a0a5599eda2850f942cc77c7f621bcf9b5394b70..0073554fd55c6c722d60f0279bc0b7d41e0cfd25 100644 (file)
@@ -162,11 +162,11 @@ void BoosRendererThreads() {
   if (IsLiteMemoryBoard() && GetCurrentSystemTime() > 500000)
     return;
 
-  LOG(INFO) << "boost Renderer/GPU threads as RR";
+  LOG(INFO) << "register Renderer/GPU threads as RR";
   WRT_thread_booster::GetInstance()->RegisterThreadByName("Chrome_InProcRe");
   WRT_thread_booster::GetInstance()->RegisterThreadByName("Chrome_InProcGp");
   if (IsLiteMemoryBoard()) {
-    LOG(INFO) << "boost Compositor threads as RR (LiteMemory Model)";
+    LOG(INFO) << "register Compositor threads as RR (Only LiteMemory Model)";
     WRT_thread_booster::GetInstance()->RegisterThreadByName("VizCompositorTh");
     WRT_thread_booster::GetInstance()->RegisterThreadByName("Compositor");
   }