diff --git a/chrome/browser/headless/headless_mode_protocol_browsertest.cc b/chrome/browser/headless/headless_mode_protocol_browsertest.cc index 2867173b93ab4..9640f4e527ecf 100644 --- a/chrome/browser/headless/headless_mode_protocol_browsertest.cc +++ b/chrome/browser/headless/headless_mode_protocol_browsertest.cc @@ -198,5 +198,7 @@ void HeadlessModeProtocolBrowserTest::OnConsoleAPICalled( } HEADLESS_MODE_PROTOCOL_TEST(DomFocus, "input/dom-focus.js") +HEADLESS_MODE_PROTOCOL_TEST(FocusBlurNotifications, + "input/focus-blur-notifications.js") } // namespace headless diff --git a/chrome/browser/headless/test/data/protocol/input/focus-blur-notifications-expected.txt b/chrome/browser/headless/test/data/protocol/input/focus-blur-notifications-expected.txt new file mode 100644 index 0000000000000..e12e047041d0e --- /dev/null +++ b/chrome/browser/headless/test/data/protocol/input/focus-blur-notifications-expected.txt @@ -0,0 +1,9 @@ +Tests focus/blur notifications. +onfocus button1 +onblur button1 +onfocus button2 +onblur button2 +onfocus button1 +onblur button1 +onfocus button2 +quit \ No newline at end of file diff --git a/chrome/browser/headless/test/data/protocol/input/focus-blur-notifications.js b/chrome/browser/headless/test/data/protocol/input/focus-blur-notifications.js new file mode 100644 index 0000000000000..74685f5a0d100 --- /dev/null +++ b/chrome/browser/headless/test/data/protocol/input/focus-blur-notifications.js @@ -0,0 +1,28 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +(async function(testRunner) { + const {page, session, dp} = + await testRunner.startBlank('Tests focus/blur notifications.'); + + await dp.Runtime.enable(); + + dp.Runtime.onConsoleAPICalled(data => { + const text = data.params.args[0].value; + testRunner.log(text); + if (text === 'quit') { + testRunner.completeTest(); + } + }); + + await dp.Page.enable(); + + // Chrome optimizes away onfocus/onblur notifications if the target page + // is not active, so activate it explicitly. Note that this is not needed + // for the old headless which implicitly sets focus to a navigated page. + dp.Page.bringToFront(); + + dp.Page.navigate( + {url: testRunner.url('/resources/focus-blur-notifications.html')}); +}) diff --git a/chrome/browser/headless/test/data/protocol/input/resources/focus-blur-notifications.html b/chrome/browser/headless/test/data/protocol/input/resources/focus-blur-notifications.html new file mode 100644 index 0000000000000..ad7f11e84189d --- /dev/null +++ b/chrome/browser/headless/test/data/protocol/input/resources/focus-blur-notifications.html @@ -0,0 +1,45 @@ + + + + + +
+ +
+
+ +
+ + + + diff --git a/headless/test/data/protocol/input/focus-blur-notifications-expected.txt b/headless/test/data/protocol/input/focus-blur-notifications-expected.txt index b354826b0244d..e12e047041d0e 100644 --- a/headless/test/data/protocol/input/focus-blur-notifications-expected.txt +++ b/headless/test/data/protocol/input/focus-blur-notifications-expected.txt @@ -1,6 +1,9 @@ Tests focus/blur notifications. -onload onfocus button1 -onblur button1 +onblur button1 +onfocus button2 +onblur button2 onfocus button1 -onblur button1 \ No newline at end of file +onblur button1 +onfocus button2 +quit \ No newline at end of file diff --git a/headless/test/data/protocol/input/focus-blur-notifications.js b/headless/test/data/protocol/input/focus-blur-notifications.js index 03201397fa1ce..ffc44451b51d8 100644 --- a/headless/test/data/protocol/input/focus-blur-notifications.js +++ b/headless/test/data/protocol/input/focus-blur-notifications.js @@ -11,12 +11,12 @@ dp.Runtime.onConsoleAPICalled(data => { const text = data.params.args[0].value; testRunner.log(text); + if (text === 'quit') { + testRunner.completeTest(); + } }); await dp.Page.enable(); dp.Page.navigate( {url: testRunner.url('/resources/focus-blur-notifications.html')}); - await dp.Page.onceLoadEventFired(); - - testRunner.completeTest(); }) diff --git a/headless/test/data/protocol/input/resources/focus-blur-notifications.html b/headless/test/data/protocol/input/resources/focus-blur-notifications.html index a38694ab8a457..ad7f11e84189d 100644 --- a/headless/test/data/protocol/input/resources/focus-blur-notifications.html +++ b/headless/test/data/protocol/input/resources/focus-blur-notifications.html @@ -1,33 +1,31 @@ - -