From 4e0973c6a0e160442f1b809005088598e170c38a Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Thu, 17 Sep 2026 17:05:19 +0900 Subject: [PATCH] [in_app_purchase] Use wrapper api --- .github/workflows/analyze.yml | 3 +- .../tizen/inc/ftpw_in_app_purchase.h | 54 ++++++++ .../tizen/inc/rapidjson/rapidjson.h | 4 +- .../lib/aarch64/libftpw_in_app_purchase.so | Bin 0 -> 14776 bytes .../lib/armel/libftpw_in_app_purchase.so | Bin 0 -> 9792 bytes .../tizen/lib/i586/libftpw_in_app_purchase.so | Bin 0 -> 9812 bytes .../lib/x86_64/libftpw_in_app_purchase.so | Bin 0 -> 14864 bytes .../in_app_purchase/tizen/project_def.prop | 3 + .../tizen/src/billing_manager.cc | 129 +++--------------- .../tizen/src/billing_manager.h | 46 ------- .../tizen/src/billing_service_proxy.cc | 97 ------------- .../tizen/src/billing_service_proxy.h | 94 ------------- .../tizen/src/in_app_purchase_tizen_plugin.cc | 10 +- .../tizen/inc/rapidjson/rapidjson.h | 4 +- 14 files changed, 80 insertions(+), 364 deletions(-) create mode 100644 packages/in_app_purchase/tizen/inc/ftpw_in_app_purchase.h create mode 100755 packages/in_app_purchase/tizen/lib/aarch64/libftpw_in_app_purchase.so create mode 100755 packages/in_app_purchase/tizen/lib/armel/libftpw_in_app_purchase.so create mode 100755 packages/in_app_purchase/tizen/lib/i586/libftpw_in_app_purchase.so create mode 100755 packages/in_app_purchase/tizen/lib/x86_64/libftpw_in_app_purchase.so delete mode 100644 packages/in_app_purchase/tizen/src/billing_service_proxy.cc delete mode 100644 packages/in_app_purchase/tizen/src/billing_service_proxy.h diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 779be486b..433005fb9 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -28,8 +28,7 @@ jobs: channel: stable - name: Install clang-format run: | - sudo apt-get update - sudo apt-get install clang-format-11 + pip install clang-format==16.0.6 - name: Check format run: | ./tools/tools_runner.sh format --fail-on-change --no-kotlin --no-java --no-swift --clang-format-path=clang-format-11 \ diff --git a/packages/in_app_purchase/tizen/inc/ftpw_in_app_purchase.h b/packages/in_app_purchase/tizen/inc/ftpw_in_app_purchase.h new file mode 100644 index 000000000..b058d4642 --- /dev/null +++ b/packages/in_app_purchase/tizen/inc/ftpw_in_app_purchase.h @@ -0,0 +1,54 @@ +// Copyright 2026 Samsung Electronics Co., Ltd. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +#ifndef FLUTTER_TIZEN_PLUGINS_WRAPPER_IN_APP_PURCHASE_H_ +#define FLUTTER_TIZEN_PLUGINS_WRAPPER_IN_APP_PURCHASE_H_ + +#include +#include + +typedef void (*billing_payment_api_cb)(const char *detail_result, + void *user_data); +typedef bool (*billing_buyitem_cb)(const char *pay_result, + const char *detail_info, void *user_data); + +typedef struct sso_login_info { + char login_id[128]; + char login_pwd[128]; + char login_guid[128]; + char uid[128]; + char user_icon[128 * 8]; +} sso_login_info_s; + +#ifdef __cplusplus +extern "C" { +#endif + +// Native libraries remain loaded for the process lifetime (callbacks may +// outlive calls). + +bool ftpw_in_app_purchase_service_billing_get_products_list( + const char *app_id, const char *country_code, int page_size, + int page_number, const char *check_value, billing_payment_api_cb callback, + void *user_data); +bool ftpw_in_app_purchase_service_billing_get_purchase_list( + const char *app_id, const char *custom_id, const char *country_code, + int page_number, const char *check_value, billing_payment_api_cb callback, + void *user_data); +bool ftpw_in_app_purchase_service_billing_is_service_available( + billing_payment_api_cb callback, void *user_data); +bool ftpw_in_app_purchase_service_billing_buyitem(const char *app_id, + const char *detail_info); +void ftpw_in_app_purchase_service_billing_set_buyitem_cb( + billing_buyitem_cb callback, void *user_data); +bool ftpw_in_app_purchase_service_billing_verify_invoice( + const char *app_id, const char *custom_id, const char *invoice_id, + const char *country_code, billing_payment_api_cb callback, void *user_data); +bool ftpw_in_app_purchase_sso_get_login_info(sso_login_info_s *login_info); +char *ftpw_in_app_purchase_get_county_code(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/in_app_purchase/tizen/inc/rapidjson/rapidjson.h b/packages/in_app_purchase/tizen/inc/rapidjson/rapidjson.h index 756be7012..03b3f7c1e 100644 --- a/packages/in_app_purchase/tizen/inc/rapidjson/rapidjson.h +++ b/packages/in_app_purchase/tizen/inc/rapidjson/rapidjson.h @@ -507,8 +507,8 @@ RAPIDJSON_NAMESPACE_END #define RAPIDJSON_STATIC_ASSERT(x) \ typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest)> \ - RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) \ - RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE + RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) \ + RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE #endif // RAPIDJSON_STATIC_ASSERT /////////////////////////////////////////////////////////////////////////////// diff --git a/packages/in_app_purchase/tizen/lib/aarch64/libftpw_in_app_purchase.so b/packages/in_app_purchase/tizen/lib/aarch64/libftpw_in_app_purchase.so new file mode 100755 index 0000000000000000000000000000000000000000..17767980c0e8ed99194c4935178e6551d40790bf GIT binary patch literal 14776 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 literal 0 HcmV?d00001 diff --git a/packages/in_app_purchase/tizen/lib/i586/libftpw_in_app_purchase.so b/packages/in_app_purchase/tizen/lib/i586/libftpw_in_app_purchase.so new file mode 100755 index 0000000000000000000000000000000000000000..746a30be0f586ff19468410d9b2c490312041f9e GIT binary patch literal 9812 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 U #include #include @@ -14,27 +13,13 @@ #include #include -#include "billing_service_proxy.h" +#include "ftpw_in_app_purchase.h" #include "log.h" #include "messages.h" #include "rapidjson/document.h" namespace in_app_purchase_tizen { -static std::string ServerTypeToString(billing_server_type server_type) { - switch (server_type) { - case SERVERTYPE_OPERATE: - return "PRD"; - break; - case SERVERTYPE_DEV: - return "DEV"; - break; - default: - return "NONE"; - break; - } -} - static flutter::EncodableValue ConvertVariantToEncodable( std::variant var) { if (std::holds_alternative(var)) { @@ -45,38 +30,13 @@ static flutter::EncodableValue ConvertVariantToEncodable( return flutter::EncodableValue(); } -bool BillingManager::Init() { - LOG_INFO("[BillingManager] Init billing api."); - - if (!BillingWrapper::GetInstance().Initialize()) { - LOG_ERROR("[BillingManager] Fail to initialize billing APIs."); - return false; - } - return true; -} - std::optional BillingManager::GetCustomId() { - void *handle = dlopen("libsso_api.so", RTLD_LAZY); - if (!handle) { - LOG_ERROR("[BillingManager] Fail to open sso APIs."); - return std::nullopt; - } - FuncSsoGetLoginInfo sso_get_login_info = - reinterpret_cast( - dlsym(handle, "sso_get_login_info")); - if (!sso_get_login_info) { - LOG_ERROR("[BillingManager] Fail to find the sso_get_login_info symbol."); - dlclose(handle); - return std::nullopt; - } - std::optional custom_id; sso_login_info_s login_info = {}; - int ret = sso_get_login_info(&login_info); - if (ret == SSO_SUCCESS) { + if (!ftpw_in_app_purchase_sso_get_login_info(&login_info)) { custom_id = login_info.uid; } else { - LOG_ERROR("[BillingManager] Fail to get the login info. (%d)", ret); + LOG_ERROR("[BillingManager] Fail to get the login info."); } // NOTE: written through volatile because a plain memset on a struct that // is dead afterwards is dropped by the optimizer. @@ -84,81 +44,32 @@ std::optional BillingManager::GetCustomId() { for (std::size_t i = 0; i < sizeof(login_info); ++i) { bytes[i] = 0; } - dlclose(handle); return custom_id; } std::optional BillingManager::GetCountryCode() { - void *handle = dlopen("libvconf.so.0", RTLD_LAZY); - if (!handle) { - LOG_ERROR("[BillingManager] Fail to open vconf APIs."); - return std::nullopt; - } - FuncVconfGetStr vconf_get_str = - reinterpret_cast(dlsym(handle, "vconf_get_str")); - if (!vconf_get_str) { - LOG_ERROR("[BillingManager] Fail to find the vconf_get_str symbol."); - dlclose(handle); - return std::nullopt; - } - std::optional country_code; - char *value = vconf_get_str("db/comss/countrycode"); + char *value = ftpw_in_app_purchase_get_county_code(); if (value) { country_code = value; free(value); } else { - LOG_ERROR("[BillingManager] Fail to read db/comss/countrycode."); + LOG_ERROR("[BillingManager] Fail to get country code."); } - dlclose(handle); return country_code; } bool BillingManager::IsAvailable(FunctionResult result) { LOG_INFO("[BillingManager] Check billing server is available."); - void *handle = dlopen("libcapi-system-info.so.0", RTLD_LAZY); - if (!handle) { - LOG_ERROR("[BillingManager] Fail to open system APIs."); - } else { - FuncSystemInfGetValueInt system_info_get_value_int = - reinterpret_cast( - dlsym(handle, "system_info_get_value_int")); - if (system_info_get_value_int) { - int tv_server_type = 0; - int ret = system_info_get_value_int(SYSTEM_INFO_KEY_INFO_LINK_SERVER_TYPE, - &tv_server_type); - if (ret == SYSTEM_INFO_ERROR_NONE) { - switch (tv_server_type) { - case PRD: - billing_server_type_ = SERVERTYPE_OPERATE; - break; - case DEV: - billing_server_type_ = SERVERTYPE_DEV; - break; - default: - billing_server_type_ = SERVERTYPE_NONE; - break; - } - LOG_INFO("[BillingManager] Billing Server Type is %d", - billing_server_type_); - } else { - LOG_ERROR("[BillingManager] Fail to get TV server type."); - dlclose(handle); - return false; - } - } - dlclose(handle); - } - if (is_available_callback_) { LOG_ERROR("[BillingManager] IsAvailable is already called."); return false; } is_available_callback_ = std::move(result); - bool ret = BillingWrapper::GetInstance().service_billing_is_service_available( - billing_server_type_, OnAvailable, this); + bool ret = ftpw_in_app_purchase_service_billing_is_service_available( + OnAvailable, this); if (!ret) { is_available_callback_ = nullptr; LOG_ERROR("[BillingManager] service_billing_is_service_available failed."); @@ -179,9 +90,9 @@ bool BillingManager::GetProductList( } get_product_list_callback_ = std::move(result); - bool ret = BillingWrapper::GetInstance().service_billing_get_products_list( - app_id, country_code, page_size, page_number, check_value, - billing_server_type_, OnProducts, this); + bool ret = ftpw_in_app_purchase_service_billing_get_products_list( + app_id, country_code, page_size, page_number, check_value, OnProducts, + this); if (!ret) { get_product_list_callback_ = nullptr; LOG_ERROR("[BillingManager] service_billing_get_products_list failed."); @@ -202,9 +113,9 @@ bool BillingManager::GetPurchaseList( } get_purchase_list_callback_ = std::move(result); - bool ret = BillingWrapper::GetInstance().service_billing_get_purchase_list( - app_id, custom_id, country_code, page_number, check_value, - billing_server_type_, OnPurchase, this); + bool ret = ftpw_in_app_purchase_service_billing_get_purchase_list( + app_id, custom_id, country_code, page_number, check_value, OnPurchase, + this); if (!ret) { get_purchase_list_callback_ = nullptr; LOG_ERROR("[BillingManager] service_billing_get_purchase_list failed."); @@ -224,9 +135,8 @@ bool BillingManager::BuyItem(const char *app_id, const char *detail_info, } buy_item_callback_ = std::move(result); - bool ret = BillingWrapper::GetInstance().service_billing_buyitem( - app_id, ServerTypeToString(billing_server_type_).c_str(), detail_info); - BillingWrapper::GetInstance().service_billing_set_buyitem_cb(OnBuyItem, this); + bool ret = ftpw_in_app_purchase_service_billing_buyitem(app_id, detail_info); + ftpw_in_app_purchase_service_billing_set_buyitem_cb(OnBuyItem, this); if (!ret) { buy_item_callback_ = nullptr; LOG_ERROR("[BillingManager] service_billing_buyitem failed."); @@ -246,9 +156,8 @@ bool BillingManager::VerifyInvoice( } verify_invoice_callback_ = std::move(result); - bool ret = BillingWrapper::GetInstance().service_billing_verify_invoice( - app_id, custom_id, invoice_id, country_code, billing_server_type_, - OnVerify, this); + bool ret = ftpw_in_app_purchase_service_billing_verify_invoice( + app_id, custom_id, invoice_id, country_code, OnVerify, this); if (!ret) { verify_invoice_callback_ = nullptr; LOG_ERROR("[BillingManager] service_billing_verify_invoice failed."); @@ -530,8 +439,4 @@ void BillingManager::OnVerify(const char *detail_result, void *user_data) { self->verify_invoice_callback_ = nullptr; } -void BillingManager::Dispose() { - LOG_INFO("[BillingManager] Dispose billing."); -} - } // namespace in_app_purchase_tizen diff --git a/packages/in_app_purchase/tizen/src/billing_manager.h b/packages/in_app_purchase/tizen/src/billing_manager.h index 7a140b7ce..a0a9f94e7 100644 --- a/packages/in_app_purchase/tizen/src/billing_manager.h +++ b/packages/in_app_purchase/tizen/src/billing_manager.h @@ -5,8 +5,6 @@ #ifndef FLUTTER_PLUGIN_BILLING_MANAGER_H #define FLUTTER_PLUGIN_BILLING_MANAGER_H -#include - #include #include #include @@ -14,51 +12,11 @@ #include #include -#include "billing_service_proxy.h" #include "messages.h" #include "rapidjson/document.h" -#define SSO_API_MAX_STRING_LEN 128 -#define SSO_SUCCESS 0 - namespace in_app_purchase_tizen { -typedef struct sso_login_info { - char login_id[SSO_API_MAX_STRING_LEN]; - char login_pwd[SSO_API_MAX_STRING_LEN]; - char login_guid[SSO_API_MAX_STRING_LEN]; - char uid[SSO_API_MAX_STRING_LEN]; - char user_icon[SSO_API_MAX_STRING_LEN * 8]; -} sso_login_info_s; - -typedef enum { - PRD = 0, - DEV, -} tv_server_type; - -typedef enum { - SYSTEM_INFO_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ - SYSTEM_INFO_ERROR_INVALID_PARAMETER = - TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ - SYSTEM_INFO_ERROR_OUT_OF_MEMORY = - TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ - SYSTEM_INFO_ERROR_IO_ERROR = - TIZEN_ERROR_IO_ERROR, /**< An input/output error occurred when reading - value from system */ - SYSTEM_INFO_ERROR_PERMISSION_DENIED = - TIZEN_ERROR_PERMISSION_DENIED, /**< No permission to use the API */ - SYSTEM_INFO_ERROR_NOT_SUPPORTED = - TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported parameter (Since 3.0) */ -} system_info_error_e; - -typedef enum { - SYSTEM_INFO_KEY_INFO_LINK_SERVER_TYPE = 126, -} system_info_key_e; - -typedef int (*FuncSsoGetLoginInfo)(sso_login_info_s *login_info); -typedef char *(*FuncVconfGetStr)(const char *in_key); -typedef int (*FuncSystemInfGetValueInt)(system_info_key_e key, int *value); - template using FunctionResult = std::function)>; @@ -102,8 +60,6 @@ class BillingManager { explicit BillingManager() {} ~BillingManager(){}; - bool Init(); - void Dispose(); bool IsAvailable(FunctionResult result); bool BuyItem(const char *app_id, const char *detail_info, FunctionResult result); @@ -128,8 +84,6 @@ class BillingManager { static void OnAvailable(const char *detail_result, void *user_data); static void OnVerify(const char *detail_result, void *user_data); - billing_server_type billing_server_type_; - FunctionResult is_available_callback_; FunctionResult buy_item_callback_; FunctionResult get_product_list_callback_; diff --git a/packages/in_app_purchase/tizen/src/billing_service_proxy.cc b/packages/in_app_purchase/tizen/src/billing_service_proxy.cc deleted file mode 100644 index 389e1642b..000000000 --- a/packages/in_app_purchase/tizen/src/billing_service_proxy.cc +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2025 Samsung Electronics Co., Ltd. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "billing_service_proxy.h" - -#include - -BillingWrapper::BillingWrapper() { - handle_ = dlopen("libbilling_api.so", RTLD_LAZY); -} - -BillingWrapper::~BillingWrapper() { - if (handle_) { - dlclose(handle_); - } -} - -bool BillingWrapper::Initialize() { - if (!handle_) { - return false; - } - - get_products_list = reinterpret_cast( - dlsym(handle_, "service_billing_get_products_list")); - get_purchase_list = reinterpret_cast( - dlsym(handle_, "service_billing_get_purchase_list")); - is_service_available = reinterpret_cast( - dlsym(handle_, "service_billing_is_service_available")); - buyitem = - reinterpret_cast(dlsym(handle_, "service_billing_buyitem")); - set_buyitem_cb = reinterpret_cast( - dlsym(handle_, "service_billing_set_buyitem_cb")); - verify_invoice = reinterpret_cast( - dlsym(handle_, "service_billing_verify_invoice")); - return get_products_list && get_purchase_list && is_service_available && - buyitem && set_buyitem_cb && verify_invoice; -} - -bool BillingWrapper::service_billing_get_products_list( - const char *app_id, const char *country_code, int page_size, - int page_number, const char *check_value, billing_server_type server_type, - billing_payment_api_cb callback, void *user_data) { - if (get_products_list) { - return get_products_list(app_id, country_code, page_size, page_number, - check_value, server_type, callback, user_data); - } - return false; -} - -bool BillingWrapper::service_billing_get_purchase_list( - const char *app_id, const char *custom_id, const char *country_code, - int page_number, const char *check_value, billing_server_type server_type, - billing_payment_api_cb callback, void *user_data) { - if (get_purchase_list) { - return get_purchase_list(app_id, custom_id, country_code, page_number, - check_value, server_type, callback, user_data); - } - return false; -} - -bool BillingWrapper::service_billing_buyitem(const char *app_id, - const char *server_type, - const char *detail_info) { - if (buyitem) { - return buyitem(app_id, server_type, detail_info); - } - return false; -} - -void BillingWrapper::service_billing_set_buyitem_cb(billing_buyitem_cb callback, - void *user_data) { - if (set_buyitem_cb) { - return set_buyitem_cb(callback, user_data); - } - return; -} - -bool BillingWrapper::service_billing_is_service_available( - billing_server_type server_type, billing_payment_api_cb callback, - void *user_data) { - if (is_service_available) { - return is_service_available(server_type, callback, user_data); - } - return false; -} - -bool BillingWrapper::service_billing_verify_invoice( - const char *app_id, const char *custom_id, const char *invoice_id, - const char *country_code, billing_server_type server_type, - billing_payment_api_cb callback, void *user_data) { - if (verify_invoice) { - return verify_invoice(app_id, custom_id, invoice_id, country_code, - server_type, callback, user_data); - } - return false; -} diff --git a/packages/in_app_purchase/tizen/src/billing_service_proxy.h b/packages/in_app_purchase/tizen/src/billing_service_proxy.h deleted file mode 100644 index ff77e14ab..000000000 --- a/packages/in_app_purchase/tizen/src/billing_service_proxy.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2025 Samsung Electronics Co., Ltd. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_PLUGIN_BILLING_SERVICE_PROXY_H_ -#define FLUTTER_PLUGIN_BILLING_SERVICE_PROXY_H_ - -typedef enum { - SERVERTYPE_OPERATE = 10005, - SERVERTYPE_DEV, - SERVERTYPE_WORKING, - SERVERTYPE_DUMMY, - SERVERTYPE_NONE -} billing_server_type; - -typedef void (*billing_payment_api_cb)(const char *detail_result, - void *user_data); -typedef bool (*billing_buyitem_cb)(const char *pay_result, - const char *detail_info, void *user_data); -typedef bool (*FuncGetProductslist)(const char *app_id, - const char *country_code, int page_size, - int page_number, const char *check_value, - billing_server_type server_type, - billing_payment_api_cb callback, - void *user_data); -typedef bool (*FuncGetpurchaselist)(const char *app_id, const char *custom_id, - const char *country_code, int page_number, - const char *check_value, - billing_server_type server_type, - billing_payment_api_cb callback, - void *user_data); -typedef bool (*FuncBuyItem)(const char *app_id, const char *server_type, - const char *detail_info); -typedef void (*FuncSetBuyItemCb)(billing_buyitem_cb callback, void *user_data); -typedef bool (*FuncIsServiceAvailable)(billing_server_type server_type, - billing_payment_api_cb callback, - void *user_data); -typedef bool (*FuncVerifyInvoice)(const char *app_id, const char *custom_id, - const char *invoice_id, - const char *country_code, - billing_server_type server_type, - billing_payment_api_cb callback, - void *user_data); - -class BillingWrapper { - public: - static BillingWrapper &GetInstance() { - static BillingWrapper instance = BillingWrapper(); - return instance; - } - - ~BillingWrapper(); - - BillingWrapper(const BillingWrapper &) = delete; - BillingWrapper &operator=(const BillingWrapper &) = delete; - - bool Initialize(); - - bool service_billing_get_products_list( - const char *app_id, const char *country_code, int page_size, - int page_number, const char *check_value, billing_server_type server_type, - billing_payment_api_cb callback, void *user_data); - bool service_billing_get_purchase_list( - const char *app_id, const char *custom_id, const char *country_code, - int page_number, const char *check_value, billing_server_type server_type, - billing_payment_api_cb callback, void *user_data); - bool service_billing_buyitem(const char *app_id, const char *server_type, - const char *detail_info); - void service_billing_set_buyitem_cb(billing_buyitem_cb callback, - void *user_data); - bool service_billing_is_service_available(billing_server_type server_type, - billing_payment_api_cb callback, - void *user_data); - bool service_billing_verify_invoice(const char *app_id, const char *custom_id, - const char *invoice_id, - const char *country_code, - billing_server_type server_type, - billing_payment_api_cb callback, - void *user_data); - - private: - BillingWrapper(); - - FuncGetProductslist get_products_list = nullptr; - FuncGetpurchaselist get_purchase_list = nullptr; - FuncBuyItem buyitem = nullptr; - FuncSetBuyItemCb set_buyitem_cb = nullptr; - FuncIsServiceAvailable is_service_available = nullptr; - FuncVerifyInvoice verify_invoice = nullptr; - - void *handle_ = nullptr; -}; - -#endif // FLUTTER_PLUGIN_BILLING_SERVICE_PROXY_H_ diff --git a/packages/in_app_purchase/tizen/src/in_app_purchase_tizen_plugin.cc b/packages/in_app_purchase/tizen/src/in_app_purchase_tizen_plugin.cc index f9a29dba6..75e80aa40 100644 --- a/packages/in_app_purchase/tizen/src/in_app_purchase_tizen_plugin.cc +++ b/packages/in_app_purchase/tizen/src/in_app_purchase_tizen_plugin.cc @@ -54,18 +54,10 @@ class InAppPurchaseTizenPlugin : public flutter::Plugin, InAppPurchaseTizenPlugin::InAppPurchaseTizenPlugin( flutter::PluginRegistrar *plugin_registrar) { billing_ = std::make_unique(); - if (!billing_->Init()) { - Dispose(); - } InAppPurchaseTizenPlugin::SetUp(plugin_registrar->messenger(), this); } -void InAppPurchaseTizenPlugin::Dispose() { - if (billing_) { - billing_->Dispose(); - } - billing_ = nullptr; -} +void InAppPurchaseTizenPlugin::Dispose() { billing_ = nullptr; } void InAppPurchaseTizenPlugin::RegisterWithRegistrar( flutter::PluginRegistrar *plugin_registrar) { diff --git a/packages/video_player_avplay/tizen/inc/rapidjson/rapidjson.h b/packages/video_player_avplay/tizen/inc/rapidjson/rapidjson.h index 756be7012..03b3f7c1e 100644 --- a/packages/video_player_avplay/tizen/inc/rapidjson/rapidjson.h +++ b/packages/video_player_avplay/tizen/inc/rapidjson/rapidjson.h @@ -507,8 +507,8 @@ RAPIDJSON_NAMESPACE_END #define RAPIDJSON_STATIC_ASSERT(x) \ typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest)> \ - RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) \ - RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE + RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) \ + RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE #endif // RAPIDJSON_STATIC_ASSERT ///////////////////////////////////////////////////////////////////////////////