From ba316454a85145bb50133bb4266e151846c77720 Mon Sep 17 00:00:00 2001 From: Wez Date: Sat, 8 May 2021 00:16:33 +0000 Subject: [PATCH] [fuchsia] Provide helper for working with web.Frames in tests. Bug: 1200314 Change-Id: Ia4dc830d33aa70c7868fafb6b30121aa6f39196b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2879992 Auto-Submit: Wez Commit-Queue: Wez Reviewed-by: Kevin Marshall Reviewed-by: David Dorwin Cr-Commit-Position: refs/heads/master@{#880633} --- fuchsia/engine/BUILD.gn | 3 ++ fuchsia/engine/test/frame_test_helper.cc | 34 +++++++++++++++++ fuchsia/engine/test/frame_test_helper.h | 47 ++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 fuchsia/engine/test/frame_test_helper.cc create mode 100644 fuchsia/engine/test/frame_test_helper.h diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn index 5fde8854a03ce6..43eea5953bc851 100644 --- a/fuchsia/engine/BUILD.gn +++ b/fuchsia/engine/BUILD.gn @@ -373,6 +373,8 @@ fuchsia_package_runner("web_engine_with_webui_installer") { source_set("browsertest_core") { testonly = true sources = [ + "test/frame_test_helper.cc", + "test/frame_test_helper.h", "test/test_data.cc", "test/test_data.h", "test/web_engine_browser_test.cc", @@ -385,6 +387,7 @@ source_set("browsertest_core") { ":web_engine_core", "//content/public/browser", "//content/test:test_support", + "//fuchsia/base:test_support", "//net:test_support", "//testing/gtest", "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web", diff --git a/fuchsia/engine/test/frame_test_helper.cc b/fuchsia/engine/test/frame_test_helper.cc new file mode 100644 index 00000000000000..294f5a8477c16c --- /dev/null +++ b/fuchsia/engine/test/frame_test_helper.cc @@ -0,0 +1,34 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "fuchsia/engine/test/frame_test_helper.h" + +namespace cr_fuchsia { + +FrameTestHelper::FrameTestHelper(fuchsia::web::Context* context, + fuchsia::web::CreateFrameParams params) + : navigation_listener_binding_(&navigation_listener_) { + context->CreateFrameWithParams(std::move(params), frame_.NewRequest()); + frame_->SetNavigationEventListener(navigation_listener_binding_.NewBinding()); +} + +FrameTestHelper::FrameTestHelper(fuchsia::web::FrameHost* frame_host, + fuchsia::web::CreateFrameParams params) + : navigation_listener_binding_(&navigation_listener_) { + frame_host->CreateFrameWithParams(std::move(params), frame_.NewRequest()); + frame_->SetNavigationEventListener(navigation_listener_binding_.NewBinding()); +} + +FrameTestHelper::FrameTestHelper(const fuchsia::web::ContextPtr& context, + fuchsia::web::CreateFrameParams params) + : FrameTestHelper(context.get(), std::move(params)) {} + +fuchsia::web::NavigationControllerPtr +FrameTestHelper::GetNavigationController() { + fuchsia::web::NavigationControllerPtr controller; + frame_->GetNavigationController(controller.NewRequest()); + return controller; +} + +} // namespace cr_fuchsia diff --git a/fuchsia/engine/test/frame_test_helper.h b/fuchsia/engine/test/frame_test_helper.h new file mode 100644 index 00000000000000..df07dcedd53280 --- /dev/null +++ b/fuchsia/engine/test/frame_test_helper.h @@ -0,0 +1,47 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef FUCHSIA_ENGINE_TEST_FRAME_TEST_HELPER_H_ +#define FUCHSIA_ENGINE_TEST_FRAME_TEST_HELPER_H_ + +#include +#include +#include + +#include "fuchsia/base/test_navigation_listener.h" + +namespace cr_fuchsia { + +// Helper for tests which need to create fuchsia.web.Frames. +class FrameTestHelper { + public: + FrameTestHelper(fuchsia::web::Context* context, + fuchsia::web::CreateFrameParams params); + FrameTestHelper(fuchsia::web::FrameHost* frame_host, + fuchsia::web::CreateFrameParams params); + FrameTestHelper(const fuchsia::web::ContextPtr& context, + fuchsia::web::CreateFrameParams params); + ~FrameTestHelper(); + + FrameTestHelper(const FrameTestHelper&) = delete; + FrameTestHelper& operator=(const FrameTestHelper&) = delete; + + // Returns a new NavigationController for each call, which ensures that any + // calls made to |frame()| will have been processed before navigation + // controller requests. + fuchsia::web::NavigationControllerPtr GetNavigationController(); + + fuchsia::web::FramePtr& frame() { return frame_; } + TestNavigationListener& navigation_listener() { return navigation_listener_; } + + private: + fuchsia::web::FramePtr frame_; + TestNavigationListener navigation_listener_; + fidl::Binding + navigation_listener_binding_; +}; + +} // namespace cr_fuchsia + +#endif // FUCHSIA_ENGINE_TEST_FRAME_TEST_HELPER_H_