summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-09-29 16:16:15 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-11-09 10:04:06 +0000
commita95a7417ad456115a1ef2da4bb8320531c0821f1 (patch)
treeedcd59279e486d2fd4a8f88a7ed025bcf925c6e6 /chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
parent33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (diff)
BASELINE: Update Chromium to 106.0.5249.126
Change-Id: Ib0bb21c437a7d1686e21c33f2d329f2ac425b7ab Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/438936 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc')
-rw-r--r--chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc78
1 files changed, 73 insertions, 5 deletions
diff --git a/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc b/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
index 4f2a14feff9..f4ba6142b99 100644
--- a/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
+++ b/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
@@ -34,6 +34,8 @@
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/download_test_observer.h"
+#include "content/public/test/fenced_frame_test_util.h"
+#include "content/public/test/test_navigation_observer.h"
#include "extensions/browser/extension_action.h"
#include "extensions/browser/extension_action_manager.h"
#include "extensions/browser/extension_host.h"
@@ -72,7 +74,7 @@ namespace {
bool IsDownloadSurfaceVisible(BrowserWindow* window) {
return base::FeatureList::IsEnabled(safe_browsing::kDownloadBubble)
? window->GetDownloadBubbleUIController()
- ->display_controller_for_testing()
+ ->GetDownloadDisplayController()
->download_display_for_testing()
->IsShowingDetails()
: window->IsDownloadShelfVisible();
@@ -432,7 +434,8 @@ IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveTest, TabSwitchClosesPopup) {
ExtensionHostTestHelper host_helper(profile());
// Change active tabs, the extension popup should close.
browser()->tab_strip_model()->ActivateTabAt(
- 0, {TabStripModel::GestureType::kOther});
+ 0, TabStripUserGestureDetails(
+ TabStripUserGestureDetails::GestureType::kOther));
host_helper.WaitForHostDestroyed();
EXPECT_FALSE(ExtensionActionTestHelper::Create(browser())->HasPopup());
@@ -613,8 +616,9 @@ class MainFrameSizeWaiter : public content::WebContentsObserver {
// TODO(crbug.com/1249851): Test crashes on Windows
#if BUILDFLAG(IS_WIN)
#define MAYBE_BrowserActionPopup DISABLED_BrowserActionPopup
-#elif BUILDFLAG(IS_LINUX) && defined(THREAD_SANITIZER)
-// TODO(crbug.com/1269076): Test is flaky for linux tsan builds
+#elif BUILDFLAG(IS_LINUX) && \
+ (defined(THREAD_SANITIZER) || defined(ADDRESS_SANITIZER))
+// TODO(crbug.com/1269076): Test is flaky for linux tsan and asan builds
#define MAYBE_BrowserActionPopup DISABLED_BrowserActionPopup
#elif BUILDFLAG(IS_MAC)
// TODO(crbug.com/1269076): Test is flaky on Mac as well.
@@ -786,7 +790,6 @@ class RenderFrameChangedWatcher : public content::WebContentsObserver {
IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveTest,
BrowserActionPopupWithIframe) {
ASSERT_TRUE(embedded_test_server()->Start());
-
ASSERT_TRUE(LoadExtension(
test_data_dir_.AppendASCII("browser_action/popup_with_iframe")));
const Extension* extension = GetSingleLoadedExtension();
@@ -832,6 +835,71 @@ IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveTest,
EXPECT_TRUE(ClosePopup());
}
+class BrowserActionInteractiveFencedFrameTest
+ : public BrowserActionInteractiveTest {
+ public:
+ ~BrowserActionInteractiveFencedFrameTest() override = default;
+
+ content::test::FencedFrameTestHelper& fenced_frame_test_helper() {
+ return fenced_frame_test_helper_;
+ }
+
+ private:
+ content::test::FencedFrameTestHelper fenced_frame_test_helper_;
+};
+
+IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveFencedFrameTest,
+ BrowserActionPopupWithFencedFrame) {
+ net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
+ https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
+ https_server.ServeFilesFromSourceDirectory("chrome/test/data");
+ ASSERT_TRUE(https_server.Start());
+
+ ASSERT_TRUE(LoadExtension(
+ test_data_dir_.AppendASCII("browser_action/popup_with_fencedframe")));
+ const Extension* extension = GetSingleLoadedExtension();
+ ASSERT_TRUE(extension) << message_;
+
+ // Simulate a click on the browser action to open the popup.
+ ASSERT_TRUE(OpenPopupViaToolbar(extension->id()));
+
+ // Find a primary main frame associated in the popup.
+ extensions::ProcessManager* manager =
+ extensions::ProcessManager::Get(browser()->profile());
+ std::set<content::RenderFrameHost*> hosts =
+ manager->GetRenderFrameHostsForExtension(extension->id());
+ const auto& it =
+ base::ranges::find_if(hosts, [](content::RenderFrameHost* host) {
+ return host->IsInPrimaryMainFrame();
+ });
+ content::RenderFrameHost* primary_rfh = (it != hosts.end()) ? *it : nullptr;
+ ASSERT_TRUE(primary_rfh);
+
+ // Navigate the popup's fenced frame to a (cross-site) web page via its
+ // parent, and wait for that page to send a message, which will ensure that
+ // the page has loaded.
+ GURL foo_url(https_server.GetURL("a.test", "/popup_fencedframe.html"));
+
+ content::TestNavigationObserver observer(
+ content::WebContents::FromRenderFrameHost(primary_rfh));
+ std::string script =
+ "document.querySelector('fencedframe').src = '" + foo_url.spec() + "'";
+ EXPECT_TRUE(ExecuteScript(primary_rfh, script));
+ observer.WaitForNavigationFinished();
+
+ content::RenderFrameHost* fenced_frame_rfh =
+ fenced_frame_test_helper().GetMostRecentlyAddedFencedFrame(primary_rfh);
+ ASSERT_TRUE(fenced_frame_rfh);
+
+ // Confirm that the new page (popup_fencedframe.html) is actually loaded.
+ content::DOMMessageQueue dom_message_queue(fenced_frame_rfh);
+ std::string json;
+ EXPECT_TRUE(dom_message_queue.WaitForMessage(&json));
+ EXPECT_EQ("\"DONE\"", json);
+
+ EXPECT_TRUE(ClosePopup());
+}
+
class NavigatingExtensionPopupInteractiveTest
: public BrowserActionInteractiveTest {
public: