From b667cd69ca064869785ac72e5861319e4f40179d Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sat, 5 Nov 2022 01:00:09 +0000 Subject: [PATCH] Browser: Add a banner to tabs controlled by WebDriver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From https://www.w3.org/TR/webdriver/#security: It is also suggested that user agents make an effort to visually distinguish a user agent session that is under control of WebDriver from those used for normal browsing sessions. This can be done through a browser chrome element such as a “door hanger”, colorful decoration of the OS window, or some widget element that is prevalent in the window so that it easy to identify automation windows. --- Userland/Applications/Browser/Tab.cpp | 2 ++ Userland/Applications/Browser/Tab.gml | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Userland/Applications/Browser/Tab.cpp b/Userland/Applications/Browser/Tab.cpp index fb281995ec..e910a3621a 100644 --- a/Userland/Applications/Browser/Tab.cpp +++ b/Userland/Applications/Browser/Tab.cpp @@ -668,6 +668,8 @@ void Tab::hide_event(GUI::HideEvent&) void Tab::enable_webdriver_mode() { m_web_content_view->set_is_webdriver_active(true); + auto& webdriver_banner = *find_descendant_of_type_named("webdriver_banner"); + webdriver_banner.set_visible(true); } } diff --git a/Userland/Applications/Browser/Tab.gml b/Userland/Applications/Browser/Tab.gml index 8371af44df..8d09e39052 100644 --- a/Userland/Applications/Browser/Tab.gml +++ b/Userland/Applications/Browser/Tab.gml @@ -11,6 +11,26 @@ } } + @GUI::Frame { + name: "webdriver_banner" + shape: "Box" + shadow: "Sunken" + thickness: 1 + preferred_height: "shrink" + foreground_role: "TooltipText" + background_role: "Tooltip" + fill_with_background_color: true + visible: false + layout: @GUI::HorizontalBoxLayout { + margins: [0, 4] + } + + @GUI::Label { + text: "This Browser window is controlled by WebDriver." + text_alignment: "CenterLeft" + } + } + @GUI::Widget { name: "webview_container" layout: @GUI::VerticalBoxLayout {}