From 4d17916b22dfaba7480ea437fab79098dd979446 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Thu, 8 Feb 2024 18:02:19 +0900 Subject: [PATCH] [WRTjs][Service][VD] Fix wrt-service crash When finalize ApplicationData instance on wrt-service, unexpected acrash is happened probably with wrong instance size. Change-Id: I5e859f467e3de27def4f7f208087aac3b7fcfdbc Signed-off-by: DongHyun Song --- wrt/src/common/application_data.cc | 3 +-- wrt/src/common/application_data.h | 16 +++------------- wrt/src/common/tv/application_data_tv.cc | 4 +--- wrt/src/common/tv/application_data_tv.h | 6 ++---- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/wrt/src/common/application_data.cc b/wrt/src/common/application_data.cc index 696b825..34d3c85 100755 --- a/wrt/src/common/application_data.cc +++ b/wrt/src/common/application_data.cc @@ -274,8 +274,7 @@ void ApplicationData::ParseAndSetManifestData() { widget_info_.SetImpl(std::static_pointer_cast( widget_config_parser->GetManifestData(wgt::parse::WidgetInfo::Key()))); - if (delegate_) - delegate_->ParseAndSetManifestData(widget_config_parser.get()); + PostParseManifestData(widget_config_parser.get()); } bool ApplicationData::Initialize() { diff --git a/wrt/src/common/application_data.h b/wrt/src/common/application_data.h index 291a375..5fa5511 100755 --- a/wrt/src/common/application_data.h +++ b/wrt/src/common/application_data.h @@ -28,14 +28,6 @@ namespace wrt { class NativeAppControl; -class ApplicationDataDelegate { - public: - ApplicationDataDelegate() = default; - ~ApplicationDataDelegate() = default; - - virtual void ParseAndSetManifestData(wgt::parse::WidgetConfigParser* parser) {} -}; - class ApplicationData { public: enum AppType { UI = 0, IME, WATCH, SERVICE }; @@ -49,10 +41,6 @@ class ApplicationData { static ApplicationData* Create(const std::string& service_id, const std::string& pkg_path); bool Initialize(); - void ParseAndSetManifestData(); - void SetDelegate(ApplicationDataDelegate* delegate) { - delegate_ = delegate; - } const AllowedNavigationInfo& allowed_navigation_info() const { return allowed_navigation_info_; @@ -162,6 +150,9 @@ class ApplicationData { std::unique_ptr GetMatchedLoadInfo( const wgt::parse::AppControlInfo&); + void ParseAndSetManifestData(); + virtual void PostParseManifestData(wgt::parse::WidgetConfigParser* parser) {} + AllowedNavigationInfo allowed_navigation_info_; AppControlInfoList app_control_info_list_; CategoryInfoList category_info_list_; @@ -192,7 +183,6 @@ class ApplicationData { ApplicationData::AppType app_type_; std::unordered_map metadata_; base::FilePath backup_config_xml_; - ApplicationDataDelegate* delegate_ = nullptr; }; } // namespace wrt diff --git a/wrt/src/common/tv/application_data_tv.cc b/wrt/src/common/tv/application_data_tv.cc index b97cc37..9599900 100755 --- a/wrt/src/common/tv/application_data_tv.cc +++ b/wrt/src/common/tv/application_data_tv.cc @@ -43,9 +43,7 @@ ApplicationDataTV::ApplicationDataTV() { LOG(INFO) << "user_data_path_ : " << user_data_path_; LOG(INFO) << "backup_config_xml_ : " << backup_config_xml_; - SetDelegate(this); Initialize(); - SetDelegate(nullptr); } ApplicationDataTV::ApplicationDataTV(const std::string& app_id, @@ -58,7 +56,7 @@ ApplicationDataTV::ApplicationDataTV(const std::string& app_id, backup_config_xml_ = GetBackupConfigXml(application_path_); } -void ApplicationDataTV::ParseAndSetManifestData( +void ApplicationDataTV::PostParseManifestData( wgt::parse::WidgetConfigParser* parser) { video_splash_screen_info_.SetImpl( std::static_pointer_cast( diff --git a/wrt/src/common/tv/application_data_tv.h b/wrt/src/common/tv/application_data_tv.h index 16b8ea0..4687860 100755 --- a/wrt/src/common/tv/application_data_tv.h +++ b/wrt/src/common/tv/application_data_tv.h @@ -11,8 +11,7 @@ namespace wrt { -class ApplicationDataTV : public ApplicationData, - public ApplicationDataDelegate { +class ApplicationDataTV : public ApplicationData { public: static ApplicationDataTV& GetInstance(); static const std::string GetUpgradableWrtjsPath(); @@ -30,8 +29,7 @@ class ApplicationDataTV : public ApplicationData, } private: - // ApplicationDataDelegate - void ParseAndSetManifestData(wgt::parse::WidgetConfigParser* parser) override; + void PostParseManifestData(wgt::parse::WidgetConfigParser* parser) override; absl::optional widget_license_exist_; VideoSplashScreenInfo video_splash_screen_info_; -- 2.7.4