Commit 9db0a14b authored by jonross's avatar jonross Committed by Commit Bot

Update TouchInputBrowserTest Frame Synchronizing

The TouchInputBrowserTests were flaking across OSes.
This was due to how it was waiting for frames. It was waiting for a
visual properties synchronization to have been started. However, while
this leads to a frame being generated, it does not block until that
frame is produced.

This change updates the frame syncing.
Now it will use RenderFrameSubmisisonObserver to wait for a frame from the URL load to be generated.
For non-Android it will then set a size, which triggers a visual properties sync. Then it will wait for a frame to be generated.
On Android, this size is set in the initial page load, so there is no synchronizing here.
Furthermore for Viz Hit Testing, a wait for hit test data is added.

TEST=TouchInputBrowserTest

Bug: 346363, 514456,855532
Change-Id: Ifa9179af9234d98c5be5575876c061763edb9f4e
Reviewed-on: https://chromium-review.googlesource.com/1147322Reviewed-by: default avatarDirk Pranke <dpranke@chromium.org>
Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Jonathan Ross <jonross@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578819}
parent 74963d41
......@@ -10,6 +10,7 @@
#include "base/single_thread_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "components/viz/common/features.h"
#include "content/browser/gpu/compositor_util.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/web_contents/web_contents_impl.h"
......@@ -22,6 +23,7 @@
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/content_browser_test.h"
#include "content/public/test/content_browser_test_utils.h"
#include "content/public/test/hit_test_region_observer.h"
#include "content/shell/browser/shell.h"
#include "third_party/blink/public/platform/web_input_event.h"
#include "ui/latency/latency_info.h"
......@@ -30,13 +32,6 @@ using blink::WebInputEvent;
namespace {
void GiveItSomeTime() {
base::RunLoop run_loop;
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromMilliseconds(10));
run_loop.Run();
}
const char kTouchEventDataURL[] =
"data:text/html;charset=utf-8,"
#if defined(OS_ANDROID)
......@@ -113,11 +108,23 @@ class TouchInputBrowserTest : public ContentBrowserTest {
NavigateToURL(shell(), data_url);
RenderWidgetHostImpl* host = GetWidgetHost();
// Wait to confirm a frame was generated from the navigation.
RenderFrameSubmissionObserver frame_observer(
host->render_frame_metadata_provider());
frame_observer.WaitForMetadataChange();
#if !defined(OS_ANDROID)
// On non-Android, set a size for the view, and wait for a new frame to be
// generated at that size. On Android the size is specified in
// kTouchEventDataURL.
host->GetView()->SetSize(gfx::Size(400, 400));
frame_observer.WaitForAnyFrameSubmission();
#endif
// The page is loaded in the renderer, wait for a new frame to arrive.
while (!host->RequestRepaintForTesting())
GiveItSomeTime();
if (features::IsVizHitTestingEnabled()) {
HitTestRegionObserver observer(host->GetFrameSinkId());
observer.WaitForHitTestData();
}
}
void SetUpCommandLine(base::CommandLine* cmd) override {
......@@ -126,13 +133,7 @@ class TouchInputBrowserTest : public ContentBrowserTest {
}
};
#if defined(OS_MACOSX)
// TODO(ccameron): Failing on mac: crbug.com/346363
#define MAYBE_TouchNoHandler DISABLED_TouchNoHandler
#else
#define MAYBE_TouchNoHandler TouchNoHandler
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, TouchNoHandler) {
LoadURL();
SyntheticWebTouchEvent touch;
......@@ -150,13 +151,7 @@ IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchNoHandler) {
SendTouchEvent(&touch);
}
#if defined(OS_CHROMEOS)
// crbug.com/514456
#define MAYBE_TouchHandlerNoConsume DISABLED_TouchHandlerNoConsume
#else
#define MAYBE_TouchHandlerNoConsume TouchHandlerNoConsume
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerNoConsume) {
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, TouchHandlerNoConsume) {
LoadURL();
SyntheticWebTouchEvent touch;
......@@ -173,13 +168,7 @@ IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerNoConsume) {
filter->WaitForAck();
}
#if defined(OS_CHROMEOS)
// crbug.com/514456
#define MAYBE_TouchHandlerConsume DISABLED_TouchHandlerConsume
#else
#define MAYBE_TouchHandlerConsume TouchHandlerConsume
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerConsume) {
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, TouchHandlerConsume) {
LoadURL();
SyntheticWebTouchEvent touch;
......@@ -196,16 +185,7 @@ IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_TouchHandlerConsume) {
filter->WaitForAck();
}
#if defined(OS_CHROMEOS)
// crbug.com/514456
#define MAYBE_MultiPointTouchPress DISABLED_MultiPointTouchPress
#elif defined(OS_MACOSX)
// TODO(ccameron): Failing on mac: crbug.com/346363
#define MAYBE_MultiPointTouchPress DISABLED_MultiPointTouchPress
#else
#define MAYBE_MultiPointTouchPress MultiPointTouchPress
#endif
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MAYBE_MultiPointTouchPress) {
IN_PROC_BROWSER_TEST_F(TouchInputBrowserTest, MultiPointTouchPress) {
LoadURL();
SyntheticWebTouchEvent touch;
......
......@@ -1334,7 +1334,6 @@
{
"args": [
"--enable-surface-synchronization",
"--test-launcher-filter-file=../../testing/buildbot/filters/surface_sync.content_browsertests.filter",
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
......@@ -1382,7 +1381,6 @@
{
"args": [
"--enable-features=VizDisplayCompositor",
"--test-launcher-filter-file=../../testing/buildbot/filters/viz.android.content_browsertests.filter",
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
......@@ -2744,7 +2742,6 @@
{
"args": [
"--enable-surface-synchronization",
"--test-launcher-filter-file=../../testing/buildbot/filters/surface_sync.content_browsertests.filter",
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
......@@ -2791,7 +2788,6 @@
{
"args": [
"--enable-features=VizDisplayCompositor",
"--test-launcher-filter-file=../../testing/buildbot/filters/viz.android.content_browsertests.filter",
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
......
......@@ -41,8 +41,6 @@ source_set("content_browsertests_filters") {
"//testing/buildbot/filters/cast-linux.content_browsertests.filter",
"//testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter",
"//testing/buildbot/filters/site-per-process.content_browsertests.filter",
"//testing/buildbot/filters/surface_sync.content_browsertests.filter",
"//testing/buildbot/filters/viz.android.content_browsertests.filter",
]
}
......
# Flaky failures with incorrect Input event acks. https://crbug.com/855532
-TouchInputBrowserTest.TouchHandlerConsume
-TouchInputBrowserTest.TouchHandlerNoConsume
# Android Failures
# Flaky failures with incorrect Input event acks. https://crbug.com/855532
-TouchInputBrowserTest.TouchHandlerNoConsume
\ No newline at end of file
......@@ -2096,7 +2096,6 @@
'surface_sync_content_browsertests': {
'args': [
'--enable-surface-synchronization',
'--test-launcher-filter-file=../../testing/buildbot/filters/surface_sync.content_browsertests.filter',
],
'swarming': {
'shards': 2,
......@@ -2106,7 +2105,6 @@
'viz_content_browsertests': {
'args': [
'--enable-features=VizDisplayCompositor',
'--test-launcher-filter-file=../../testing/buildbot/filters/viz.android.content_browsertests.filter',
],
'swarming': {
'shards': 2,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment