aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-05-21 16:42:38 +0300
committerlevlam <levlam@telegram.org>2026-05-21 16:42:38 +0300
commite1142ec7a4fd4941ac8c2f684036785b23ffc0b6 (patch)
tree26b736f4198cf69eb6001cc1b59c1ba8766636d8
parentc88895fe6675be6752e6b20074e412b3295c159b (diff)
Add td_api::webBrowserSettings.
-rw-r--r--CMakeLists.txt3
-rw-r--r--SplitSource.php2
-rw-r--r--td/generate/scheme/td_api.tl7
-rw-r--r--td/telegram/WebBrowserSettings.cpp56
-rw-r--r--td/telegram/WebBrowserSettings.h50
-rw-r--r--td/telegram/WebBrowserSettings.hpp54
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