Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
url = https://github.com/obsproject/libdshowcapture.git
[submodule "plugins/obs-browser"]
path = plugins/obs-browser
url = https://github.com/obsproject/obs-browser.git
url = https://github.com/tytan652/obs-browser.git
[submodule "plugins/obs-outputs/ftl-sdk"]
path = plugins/obs-outputs/ftl-sdk
url = https://github.com/Mixer/ftl-sdk.git
Expand Down
11 changes: 6 additions & 5 deletions UI/auth-oauth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
using namespace json11;

#ifdef BROWSER_AVAILABLE
#include <browser-panel.hpp>
extern QCef *cef;
extern QCefCookieManager *panel_cookies;
#include <obs-browser-api.hpp>
extern std::shared_ptr<OBSBrowserQCef> cef;
extern std::shared_ptr<OBSBrowserQCefCookieManager> panel_cookies;
#endif

/* ------------------------------------------------------------------------- */
Expand All @@ -45,7 +45,8 @@ OAuthLogin::OAuthLogin(QWidget *parent, const std::string &url, bool token)

OBSBasic::InitBrowserPanelSafeBlock();

cefWidget = cef->create_widget(nullptr, url, panel_cookies);
cefWidget =
cef->createWidget(nullptr, url.c_str(), panel_cookies.get());
if (!cefWidget) {
fail = true;
return;
Expand All @@ -65,7 +66,7 @@ OAuthLogin::OAuthLogin(QWidget *parent, const std::string &url, bool token)
bottomLayout->addStretch();

QVBoxLayout *topLayout = new QVBoxLayout(this);
topLayout->addWidget(cefWidget);
topLayout->addWidget(cefWidget->qwidget());
topLayout->addLayout(bottomLayout);
#else
UNUSED_PARAMETER(url);
Expand Down
4 changes: 2 additions & 2 deletions UI/auth-oauth.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@

#include "auth-base.hpp"

class QCefWidget;
class OBSBrowserQCefWidget;

class OAuthLogin : public QDialog {
Q_OBJECT

QCefWidget *cefWidget = nullptr;
OBSBrowserQCefWidget *cefWidget = nullptr;
QString code;
bool get_token = false;
bool fail = false;
Expand Down
14 changes: 7 additions & 7 deletions UI/auth-restream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ void RestreamAuth::LoadUI()
OBSBasic::InitBrowserPanelSafeBlock();
OBSBasic *main = OBSBasic::Get();

QCefWidget *browser;
OBSBrowserQCefWidget *browser;
std::string url;
std::string script;

Expand All @@ -157,7 +157,7 @@ void RestreamAuth::LoadUI()
chat->setWindowTitle(QTStr("Auth.Chat"));
chat->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(chat, url, panel_cookies);
browser = cef->createWidget(chat, url.c_str(), panel_cookies.get());
chat->SetWidget(browser);

main->AddDockWidget(chat, Qt::RightDockWidgetArea);
Expand All @@ -173,7 +173,7 @@ void RestreamAuth::LoadUI()
info->setWindowTitle(QTStr("Auth.StreamInfo"));
info->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(info, url, panel_cookies);
browser = cef->createWidget(info, url.c_str(), panel_cookies.get());
info->SetWidget(browser);

main->AddDockWidget(info, Qt::LeftDockWidgetArea);
Expand All @@ -189,7 +189,7 @@ void RestreamAuth::LoadUI()
channels->setWindowTitle(QTStr("RestreamAuth.Channels"));
channels->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(channels, url, panel_cookies);
browser = cef->createWidget(channels, url.c_str(), panel_cookies.get());
channels->SetWidget(browser);

main->AddDockWidget(channels, Qt::LeftDockWidgetArea);
Expand Down Expand Up @@ -224,7 +224,7 @@ void RestreamAuth::LoadUI()
bool RestreamAuth::RetryLogin()
{
OAuthLogin login(OBSBasic::Get(), RESTREAM_AUTH_URL, false);
cef->add_popup_whitelist_url("about:blank", &login);
cef->addPopupWhitelistUrl("about:blank", &login);
if (login.exec() == QDialog::Rejected) {
return false;
}
Expand All @@ -242,7 +242,7 @@ bool RestreamAuth::RetryLogin()
std::shared_ptr<Auth> RestreamAuth::Login(QWidget *parent, const std::string &)
{
OAuthLogin login(parent, RESTREAM_AUTH_URL, false);
cef->add_popup_whitelist_url("about:blank", &login);
cef->addPopupWhitelistUrl("about:blank", &login);

if (login.exec() == QDialog::Rejected) {
return nullptr;
Expand Down Expand Up @@ -276,7 +276,7 @@ static std::shared_ptr<Auth> CreateRestreamAuth()
static void DeleteCookies()
{
if (panel_cookies) {
panel_cookies->DeleteCookies("restream.io", std::string());
panel_cookies->deleteCookies("restream.io", nullptr);
}
}

Expand Down
30 changes: 15 additions & 15 deletions UI/auth-twitch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ TwitchAuth::TwitchAuth(const Def &d) : OAuthStreamKey(d)
if (!cef)
return;

cef->add_popup_whitelist_url(
cef->addPopupWhitelistUrl(
"https://twitch.tv/popout/frankerfacez/chat?ffz-settings",
this);

/* enables javascript-based popups. basically bttv popups */
cef->add_popup_whitelist_url("about:blank#blocked", this);
cef->addPopupWhitelistUrl("about:blank#blocked", this);

uiLoadTimer.setSingleShot(true);
uiLoadTimer.setInterval(500);
Expand Down Expand Up @@ -224,7 +224,7 @@ void TwitchAuth::LoadUI()
OBSBasic::InitBrowserPanelSafeBlock();
OBSBasic *main = OBSBasic::Get();

QCefWidget *browser;
OBSBrowserQCefWidget *browser;
std::string url;
std::string script;

Expand Down Expand Up @@ -258,9 +258,9 @@ void TwitchAuth::LoadUI()
chat->setWindowTitle(QTStr("Auth.Chat"));
chat->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(chat, url, panel_cookies);
browser = cef->createWidget(chat, url.c_str(), panel_cookies.get());
chat->SetWidget(browser);
cef->add_force_popup_url(moderation_tools_url, chat);
cef->addForcePopupUrl(moderation_tools_url.c_str(), chat);

if (App()->IsThemeDark()) {
script = "localStorage.setItem('twilight.theme', 1);";
Expand All @@ -277,7 +277,7 @@ void TwitchAuth::LoadUI()
script += ffz_script;
}

browser->setStartupScript(script);
browser->setStartupScript(script.c_str());

main->AddDockWidget(chat, Qt::RightDockWidgetArea);

Expand Down Expand Up @@ -307,7 +307,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
{
OBSBasic *main = OBSBasic::Get();

QCefWidget *browser;
OBSBrowserQCefWidget *browser;
std::string url;
std::string script;

Expand Down Expand Up @@ -347,9 +347,9 @@ void TwitchAuth::LoadSecondaryUIPanes()
info->setWindowTitle(QTStr("Auth.StreamInfo"));
info->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(info, url, panel_cookies);
browser = cef->createWidget(info, url.c_str(), panel_cookies.get());
info->SetWidget(browser);
browser->setStartupScript(script);
browser->setStartupScript(script.c_str());

main->AddDockWidget(info, Qt::RightDockWidgetArea);

Expand All @@ -366,9 +366,9 @@ void TwitchAuth::LoadSecondaryUIPanes()
stats->setWindowTitle(QTStr("TwitchAuth.Stats"));
stats->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(stats, url, panel_cookies);
browser = cef->createWidget(stats, url.c_str(), panel_cookies.get());
stats->SetWidget(browser);
browser->setStartupScript(script);
browser->setStartupScript(script.c_str());

main->AddDockWidget(stats, Qt::RightDockWidgetArea);

Expand All @@ -386,9 +386,9 @@ void TwitchAuth::LoadSecondaryUIPanes()
feed->setWindowTitle(QTStr("TwitchAuth.Feed"));
feed->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(feed, url, panel_cookies);
browser = cef->createWidget(feed, url.c_str(), panel_cookies.get());
feed->SetWidget(browser);
browser->setStartupScript(script);
browser->setStartupScript(script.c_str());

main->AddDockWidget(feed, Qt::RightDockWidgetArea);

Expand Down Expand Up @@ -454,7 +454,7 @@ void TwitchAuth::TryLoadSecondaryUIPanes()
}
};

panel_cookies->CheckForCookie("https://www.twitch.tv", "auth-token",
panel_cookies->checkForCookie("https://www.twitch.tv", "auth-token",
cb);
}

Expand Down Expand Up @@ -507,7 +507,7 @@ static std::shared_ptr<Auth> CreateTwitchAuth()
static void DeleteCookies()
{
if (panel_cookies)
panel_cookies->DeleteCookies("twitch.tv", std::string());
panel_cookies->deleteCookies("twitch.tv", nullptr);
}

void RegisterTwitchAuth()
Expand Down
14 changes: 7 additions & 7 deletions UI/auth-youtube.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ void YoutubeAuth::LoadUI()
OBSBasic::InitBrowserPanelSafeBlock();
OBSBasic *main = OBSBasic::Get();

QCefWidget *browser;
OBSBrowserQCefWidget *browser;

QSize size = main->frameSize();
QPoint pos = main->pos();
Expand All @@ -161,8 +161,8 @@ void YoutubeAuth::LoadUI()
chat->setMinimumSize(200, 300);
chat->setAllowedAreas(Qt::AllDockWidgetAreas);

browser = cef->create_widget(chat, YOUTUBE_CHAT_PLACEHOLDER_URL,
panel_cookies);
browser = cef->createWidget(chat, YOUTUBE_CHAT_PLACEHOLDER_URL,
panel_cookies.get());
browser->setStartupScript(ytchat_script);

chat->SetWidget(browser);
Expand Down Expand Up @@ -198,7 +198,7 @@ void YoutubeAuth::SetChatId(const QString &chat_id,
QString chat_url = QString(YOUTUBE_CHAT_POPOUT_URL).arg(chat_id);

if (chat && chat->cefWidget) {
chat->cefWidget->setURL(chat_url.toStdString());
chat->cefWidget->setUrl(QT_TO_UTF8(chat_url));
chat->SetApiChatId(api_chat_id);
}
#else
Expand All @@ -211,7 +211,7 @@ void YoutubeAuth::ResetChat()
{
#ifdef BROWSER_AVAILABLE
if (chat && chat->cefWidget) {
chat->cefWidget->setURL(YOUTUBE_CHAT_PLACEHOLDER_URL);
chat->cefWidget->setUrl(YOUTUBE_CHAT_PLACEHOLDER_URL);
}
#endif
}
Expand Down Expand Up @@ -350,7 +350,7 @@ std::shared_ptr<Auth> YoutubeAuth::Login(QWidget *owner,
}

#ifdef BROWSER_AVAILABLE
void YoutubeChatDock::SetWidget(QCefWidget *widget_)
void YoutubeChatDock::SetWidget(OBSBrowserQCefWidget *widget_)
{
lineEdit = new LineEditAutoResize();
lineEdit->setVisible(false);
Expand All @@ -366,7 +366,7 @@ void YoutubeChatDock::SetWidget(QCefWidget *widget_)

QVBoxLayout *layout = new QVBoxLayout();
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(widget_, 1);
layout->addWidget(widget_->qwidget(), 1);
layout->addLayout(chatLayout);

QWidget *widget = new QWidget();
Expand Down
2 changes: 1 addition & 1 deletion UI/auth-youtube.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class YoutubeChatDock : public BrowserDock {

public:
inline YoutubeChatDock(const QString &title) : BrowserDock(title) {}
void SetWidget(QCefWidget *widget_);
void SetWidget(OBSBrowserQCefWidget *widget_);
void SetApiChatId(const std::string &id);

private slots:
Expand Down
4 changes: 2 additions & 2 deletions UI/cmake/feature-browserpanels.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
if(TARGET OBS::browser-panels)
if(TARGET OBS::browser-api AND TARGET OBS::browser-panels)
target_enable_feature(obs-studio "Browser panels" BROWSER_AVAILABLE)

target_link_libraries(obs-studio PRIVATE OBS::browser-panels)
target_link_libraries(obs-studio PRIVATE OBS::browser-api)

target_sources(
obs-studio
Expand Down
1 change: 1 addition & 0 deletions UI/cmake/feature-restream.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
if(RESTREAM_CLIENTID
AND RESTREAM_HASH MATCHES "^(0|[a-fA-F0-9]+)$"
AND TARGET OBS::browser-api
AND TARGET OBS::browser-panels)
target_sources(obs-studio PRIVATE auth-restream.cpp auth-restream.hpp)
target_enable_feature(obs-studio "Restream API connection" RESTREAM_ENABLED)
Expand Down
1 change: 1 addition & 0 deletions UI/cmake/feature-twitch.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
if(TWITCH_CLIENTID
AND TWITCH_HASH MATCHES "^(0|[a-fA-F0-9]+)$"
AND TARGET OBS::browser-api
AND TARGET OBS::browser-panels)
target_sources(obs-studio PRIVATE auth-twitch.cpp auth-twitch.hpp)
target_enable_feature(obs-studio "Twitch API connection" TWITCH_ENABLED)
Expand Down
4 changes: 3 additions & 1 deletion UI/cmake/feature-whatsnew.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ include_guard(DIRECTORY)

option(ENABLE_WHATSNEW "Enable WhatsNew dialog" ON)

if(ENABLE_WHATSNEW AND TARGET OBS::browser-panels)
if(ENABLE_WHATSNEW
AND TARGET OBS::browser-api
AND TARGET OBS::browser-panels)
if(OS_MACOS)
include(cmake/feature-macos-update.cmake)
elseif(OS_LINUX)
Expand Down
1 change: 1 addition & 0 deletions UI/cmake/feature-youtube.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ if(YOUTUBE_CLIENTID
AND YOUTUBE_SECRET
AND YOUTUBE_CLIENTID_HASH MATCHES "^(0|[a-fA-F0-9]+)$"
AND YOUTUBE_SECRET_HASH MATCHES "^(0|[a-fA-F0-9]+)$"
AND TARGET OBS::browser-api
AND TARGET OBS::browser-panels)
target_sources(
obs-studio
Expand Down
19 changes: 5 additions & 14 deletions UI/cmake/legacy.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,6 @@ endif()

project(obs)

# Legacy support
if(TARGET obs-browser
AND NOT TARGET OBS::browser-panels
AND BROWSER_PANEL_SUPPORT_ENABLED)
add_library(obs-browser-panels INTERFACE)
add_library(OBS::browser-panels ALIAS obs-browser-panels)

target_include_directories(obs-browser-panels INTERFACE ${CMAKE_SOURCE_DIR}/plugins/obs-browser/panel)
endif()

set(OAUTH_BASE_URL
"https://auth.obsproject.com/"
CACHE STRING "Default OAuth base URL")
Expand All @@ -28,6 +18,7 @@ if(NOT DEFINED TWITCH_CLIENTID
OR "${TWITCH_CLIENTID}" STREQUAL ""
OR NOT DEFINED TWITCH_HASH
OR "${TWITCH_HASH}" STREQUAL ""
OR NOT TARGET OBS::browser-api
OR NOT TARGET OBS::browser-panels)
set(TWITCH_ENABLED OFF)
set(TWITCH_CLIENTID "")
Expand All @@ -40,6 +31,7 @@ if(NOT DEFINED RESTREAM_CLIENTID
OR "${RESTREAM_CLIENTID}" STREQUAL ""
OR NOT DEFINED RESTREAM_HASH
OR "${RESTREAM_HASH}" STREQUAL ""
OR NOT TARGET OBS::browser-api
OR NOT TARGET OBS::browser-panels)
set(RESTREAM_ENABLED OFF)
set(RESTREAM_CLIENTID "")
Expand Down Expand Up @@ -291,12 +283,11 @@ target_link_libraries(obs PRIVATE CURL::libcurl FFmpeg::avcodec FFmpeg::avutil F

set_target_properties(obs PROPERTIES FOLDER "frontend")

if(TARGET OBS::browser-panels)
get_target_property(_PANEL_INCLUDE_DIRECTORY OBS::browser-panels INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(obs PRIVATE ${_PANEL_INCLUDE_DIRECTORY})

if(TARGET OBS::browser-api AND TARGET OBS::browser-panels)
target_compile_definitions(obs PRIVATE BROWSER_AVAILABLE)

target_link_libraries(obs PRIVATE OBS::browser-api)

target_sources(obs PRIVATE window-dock-browser.cpp window-dock-browser.hpp window-extra-browsers.cpp
window-extra-browsers.hpp)

Expand Down
Loading