diff options
| author | levlam <levlam@telegram.org> | 2026-05-21 16:42:38 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-05-21 16:42:38 +0300 |
| commit | e1142ec7a4fd4941ac8c2f684036785b23ffc0b6 (patch) | |
| tree | 26b736f4198cf69eb6001cc1b59c1ba8766636d8 | |
| parent | c88895fe6675be6752e6b20074e412b3295c159b (diff) | |
Add td_api::webBrowserSettings.
| -rw-r--r-- | CMakeLists.txt | 3 | ||||
| -rw-r--r-- | SplitSource.php | 2 | ||||
| -rw-r--r-- | td/generate/scheme/td_api.tl | 7 | ||||
| -rw-r--r-- | td/telegram/WebBrowserSettings.cpp | 56 | ||||
| -rw-r--r-- | td/telegram/WebBrowserSettings.h | 50 | ||||
| -rw-r--r-- | td/telegram/WebBrowserSettings.hpp | 54 |
6 files changed, 172 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 832a81e3d..1d2af65d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -697,6 +697,7 @@ set(TDLIB_SOURCE_PART2 td/telegram/WebApp.cpp td/telegram/WebAppManager.cpp td/telegram/WebAppOpenParameters.cpp + td/telegram/WebBrowserSettings.cpp td/telegram/WebDomainException.cpp td/telegram/WebPageBlock.cpp td/telegram/WebPagesManager.cpp @@ -1131,6 +1132,7 @@ set(TDLIB_SOURCE_PART2 td/telegram/WebApp.h td/telegram/WebAppManager.h td/telegram/WebAppOpenParameters.h + td/telegram/WebBrowserSettings.h td/telegram/WebDomainException.h td/telegram/WebPageBlock.h td/telegram/WebPageId.h @@ -1255,6 +1257,7 @@ set(TDLIB_SOURCE_PART2 td/telegram/VideosManager.hpp td/telegram/VoiceNotesManager.hpp td/telegram/WebApp.hpp + td/telegram/WebBrowserSettings.hpp td/telegram/WebDomainException.hpp ${TL_TD_AUTO_SOURCE} diff --git a/SplitSource.php b/SplitSource.php index 532fd83a8..ab55f0e36 100644 --- a/SplitSource.php +++ b/SplitSource.php @@ -496,6 +496,8 @@ function split_file($file, $chunks, $undo) { 'voice_notes_manager[_(-](?![.]get[(][)])|VoiceNotesManager' => 'VoiceNotesManager', 'web_app_manager[_(-](?![.]get[(][)])|WebAppManager' => 'WebAppManager', 'WebAppOpenParameters' => 'WebAppOpenParameters', + 'WebBrowserSettings' => 'WebBrowserSettings', + 'WebDomainException' => 'WebDomainException', 'WebPageId(Hash)?' => 'WebPageId', 'web_pages_manager[_(-](?![.]get[(][)])|WebPagesManager' => 'WebPagesManager'); diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index ddf2d5bb8..c047d26ce 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -9480,6 +9480,13 @@ autosaveSettings private_chat_settings:scopeAutosaveSettings group_settings:scop //@favicon_custom_emoji_id Identifier of the custom emoji with favicon of the site; may be 0 if unknown webDomainException url:string domain:string title:string favicon_custom_emoji_id:int64 = WebDomainException; +//@description Describes web browser settings +//@open_external_browser True, if links are opened in an external browser by default +//@external_exceptions The list of websites which must be always opened in an external browser +//@in_app_exceptions The list of websites which must be always opened in the in-app browser +//@display_close_button True, if a close button must be shown in the in-app browser; for Android app only +webBrowserSettings open_external_browser:Bool external_exceptions:vector<webDomainException> in_app_exceptions:vector<webDomainException> display_close_button:Bool = WebBrowserSettings; + //@class ConnectionState @description Describes the current state of the connection to Telegram servers diff --git a/td/telegram/WebBrowserSettings.cpp b/td/telegram/WebBrowserSettings.cpp new file mode 100644 index 000000000..cd4adbdee --- /dev/null +++ b/td/telegram/WebBrowserSettings.cpp @@ -0,0 +1,56 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#include "td/telegram/WebBrowserSettings.h" + +#include "td/utils/common.h" +#include "td/utils/logging.h" + +namespace td { + +WebBrowserSettings::WebBrowserSettings( + telegram_api::object_ptr<telegram_api::account_WebBrowserSettings> &&web_browser_settings_ptr) { + switch (web_browser_settings_ptr->get_id()) { + case telegram_api::account_webBrowserSettingsNotModified::ID: + LOG(ERROR) << "Receive " << to_string(web_browser_settings_ptr); + break; + case telegram_api::account_webBrowserSettings::ID: { + auto settings = telegram_api::move_object_as<telegram_api::account_webBrowserSettings>(web_browser_settings_ptr); + open_external_browser_ = settings->open_external_browser_; + display_close_button_ = settings->display_close_button_; + external_exceptions_ = WebDomainException::get_web_domain_exceptions(std::move(settings->external_exceptions_)); + inapp_exceptions_ = WebDomainException::get_web_domain_exceptions(std::move(settings->inapp_exceptions_)); + break; + } + default: + UNREACHABLE(); + } +} + +td_api::object_ptr<td_api::webBrowserSettings> WebBrowserSettings::get_web_browser_settings_object() const { + return td_api::make_object<td_api::webBrowserSettings>( + open_external_browser_, WebDomainException::get_web_domain_exceptions_object(external_exceptions_), + WebDomainException::get_web_domain_exceptions_object(inapp_exceptions_), display_close_button_); +} + +bool operator==(const WebBrowserSettings &lhs, const WebBrowserSettings &rhs) { + return lhs.external_exceptions_ == rhs.external_exceptions_ && lhs.inapp_exceptions_ == rhs.inapp_exceptions_ && + lhs.open_external_browser_ == rhs.open_external_browser_ && + lhs.display_close_button_ == rhs.display_close_button_; +} + +bool operator!=(const WebBrowserSettings &lhs, const WebBrowserSettings &rhs) { + return !(lhs == rhs); +} + +StringBuilder &operator<<(StringBuilder &string_builder, const WebBrowserSettings &web_browser_settings) { + return string_builder << "WebBrowserSettings[open external browser = " << web_browser_settings.open_external_browser_ + << ", display close button = " << web_browser_settings.display_close_button_ + << ", external exceptions = " << web_browser_settings.external_exceptions_ + << ", in-app exceptions = " << web_browser_settings.inapp_exceptions_ << ']'; +} + +} // namespace td diff --git a/td/telegram/WebBrowserSettings.h b/td/telegram/WebBrowserSettings.h new file mode 100644 index 000000000..b9690d22f --- /dev/null +++ b/td/telegram/WebBrowserSettings.h @@ -0,0 +1,50 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#pragma once + +#include "td/telegram/td_api.h" +#include "td/telegram/telegram_api.h" +#include "td/telegram/WebDomainException.h" + +#include "td/utils/common.h" +#include "td/utils/StringBuilder.h" + +namespace td { + +class WebBrowserSettings { + vector<WebDomainException> external_exceptions_; + vector<WebDomainException> inapp_exceptions_; + bool open_external_browser_ = false; + bool display_close_button_ = false; + int64 hash_ = 0; + + friend bool operator==(const WebBrowserSettings &lhs, const WebBrowserSettings &rhs); + + friend StringBuilder &operator<<(StringBuilder &string_builder, const WebBrowserSettings &web_browser_settings); + + public: + WebBrowserSettings() = default; + + explicit WebBrowserSettings( + telegram_api::object_ptr<telegram_api::account_WebBrowserSettings> &&web_browser_settings_ptr); + + td_api::object_ptr<td_api::webBrowserSettings> get_web_browser_settings_object() const; + + template <class StorerT> + void store(StorerT &storer) const; + + template <class ParserT> + void parse(ParserT &parser); +}; + +bool operator==(const WebBrowserSettings &lhs, const WebBrowserSettings &rhs); + +bool operator!=(const WebBrowserSettings &lhs, const WebBrowserSettings &rhs); + +StringBuilder &operator<<(StringBuilder &string_builder, const WebBrowserSettings &web_browser_settings); + +} // namespace td diff --git a/td/telegram/WebBrowserSettings.hpp b/td/telegram/WebBrowserSettings.hpp new file mode 100644 index 000000000..8628f926d --- /dev/null +++ b/td/telegram/WebBrowserSettings.hpp @@ -0,0 +1,54 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#pragma once + +#include "td/telegram/WebBrowserSettings.h" +#include "td/telegram/WebDomainException.hpp" + +#include "td/utils/tl_helpers.h" + +namespace td { + +template <class StorerT> +void WebBrowserSettings::store(StorerT &storer) const { + bool has_external_exceptions = !external_exceptions_.empty(); + bool has_inapp_exceptions = !inapp_exceptions_.empty(); + BEGIN_STORE_FLAGS(); + STORE_FLAG(open_external_browser_); + STORE_FLAG(display_close_button_); + STORE_FLAG(has_external_exceptions); + STORE_FLAG(has_inapp_exceptions); + END_STORE_FLAGS(); + if (has_external_exceptions) { + td::store(external_exceptions_, storer); + } + if (has_inapp_exceptions) { + td::store(inapp_exceptions_, storer); + } + td::store(hash_, storer); +} + +template <class ParserT> +void WebBrowserSettings::parse(ParserT &parser) { + bool has_external_exceptions; + bool has_inapp_exceptions; + BEGIN_PARSE_FLAGS(); + PARSE_FLAG(open_external_browser_); + PARSE_FLAG(display_close_button_); + PARSE_FLAG(has_external_exceptions); + PARSE_FLAG(has_inapp_exceptions); + END_PARSE_FLAGS(); + if (has_external_exceptions) { + td::parse(external_exceptions_, parser); + } + if (has_inapp_exceptions) { + td::parse(inapp_exceptions_, parser); + } + td::parse(hash_, parser); +} + +} // namespace td |
