[fuchsia] Append release channel name to CIPD-archived packages.
Adds a GN arg "fuchsia_release_channel" which modifies how some released packages are named. This will allow official builders to produce packages named "web_engine_canary", "web_runner_beta", and so on., a necessary step toward running stable and canary releases on Fuchsia side-by-side. Adds test function "ConnectContextProvider()" for sourcing the ContextProvider service directly from a release channel-specific package. Bug: 1029184,1046615 Change-Id: I23845e64d909c9e7665ce3df15458c26e1f27ec6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2006189 Commit-Queue: Kevin Marshall <kmarshall@chromium.org> Reviewed-by: Wez <wez@chromium.org> Reviewed-by: James Robinson <jamesr@chromium.org> Cr-Commit-Position: refs/heads/master@{#736500}
This commit is contained in:

committed by
Commit Bot

parent
6d424ab23f
commit
b11af76b51
build/config/fuchsia
fuchsia
@ -26,9 +26,12 @@ declare_args() {
|
||||
# package_name_override: Specifies the name of the generated package, if its
|
||||
# name is different than the |package| target name. This value must match
|
||||
# package_name_override in the |package| target.
|
||||
# package_deps: An array of [package, package_name_override] array pairs
|
||||
# which specify additional dependency packages to be installed
|
||||
# prior to execution.
|
||||
# archive_name_override: Specifies the filename of the archive file (FAR)
|
||||
# which contains the package's data.
|
||||
# If left unset, defaults to |package_name_override|.
|
||||
# Defaults to the package's name.
|
||||
# package_deps: An array of [package, archive_basename] pairs that specify
|
||||
# additional dependency packages to be installed prior to execution.
|
||||
# runner_script: The runner script implementation to use, relative to
|
||||
# "build/fuchsia". Defaults to "test_runner.py".
|
||||
# install_only: If true, executing the script will only install the package
|
||||
@ -36,20 +39,29 @@ declare_args() {
|
||||
template("fuchsia_package_runner") {
|
||||
forward_variables_from(invoker, [ "runner_script" ])
|
||||
|
||||
# Compute the package name.
|
||||
if (defined(invoker.package_name_override)) {
|
||||
_pkg_shortname = invoker.package_name_override
|
||||
_package_name = invoker.package_name_override
|
||||
} else {
|
||||
_pkg_shortname = get_label_info(invoker.package, "name")
|
||||
_package_name = get_label_info(invoker.package, "name")
|
||||
}
|
||||
|
||||
# Compute the archive (FAR) filename.
|
||||
if (defined(invoker.archive_name_override)) {
|
||||
_archive_shortname = invoker.archive_name_override
|
||||
} else {
|
||||
_archive_shortname = _package_name
|
||||
}
|
||||
|
||||
_pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") +
|
||||
"/" + _pkg_shortname
|
||||
_manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest"
|
||||
_package_path = "$_pkg_dir/${_pkg_shortname}.far"
|
||||
"/" + _archive_shortname
|
||||
_manifest_path = "$_pkg_dir/${_archive_shortname}.archive_manifest"
|
||||
_package_path = "$_pkg_dir/${_archive_shortname}.far"
|
||||
|
||||
generated_run_pkg_script_path = "$root_build_dir/bin/run_${_pkg_shortname}"
|
||||
generated_run_pkg_script_path =
|
||||
"$root_build_dir/bin/run_${_archive_shortname}"
|
||||
generated_install_pkg_script_path =
|
||||
"$root_build_dir/bin/install_$_pkg_shortname"
|
||||
"$root_build_dir/bin/install_${_archive_shortname}"
|
||||
|
||||
_generate_runner_target = "${target_name}__generate_runner"
|
||||
_generate_installer_target = "${target_name}__generate_installer"
|
||||
@ -143,7 +155,7 @@ template("fuchsia_package_runner") {
|
||||
"--target-cpu",
|
||||
target_cpu,
|
||||
"--package-name",
|
||||
_pkg_shortname,
|
||||
_package_name,
|
||||
]
|
||||
|
||||
if (defined(invoker.use_test_server) && invoker.use_test_server) {
|
||||
|
@ -10,6 +10,9 @@ import("//build/config/sysroot.gni")
|
||||
# Parameters are:
|
||||
# package_name_override: Specifies the name of the package to generate,
|
||||
# if different than |target_name|.
|
||||
# archive_filename_override: Specifies the filename of the generated FAR.
|
||||
# If left unset, defaults to |package_name_override|.
|
||||
# Defaults to the target name.
|
||||
# binary: The executable target which should be launched.
|
||||
# manifest: A path to the manifest that will be used.
|
||||
# "testonly" targets default to using
|
||||
@ -33,6 +36,12 @@ template("fuchsia_package") {
|
||||
package_name = invoker.target_name
|
||||
}
|
||||
|
||||
if (defined(archive_name_override)) {
|
||||
archive_filename = archive_name_override
|
||||
} else {
|
||||
archive_filename = package_name
|
||||
}
|
||||
|
||||
if (!defined(manifest)) {
|
||||
assert(testonly == true)
|
||||
|
||||
@ -45,13 +54,13 @@ template("fuchsia_package") {
|
||||
|
||||
_pm_tool_path = "${fuchsia_sdk}/tools/pm"
|
||||
|
||||
_pkg_out_dir = "${target_gen_dir}/${pkg.package_name}"
|
||||
_runtime_deps_file = "$_pkg_out_dir/${pkg.package_name}.runtime_deps"
|
||||
_archive_manifest = "$_pkg_out_dir/${pkg.package_name}.archive_manifest"
|
||||
_pkg_out_dir = "${target_gen_dir}/${pkg.archive_filename}"
|
||||
_runtime_deps_file = "$_pkg_out_dir/${pkg.archive_filename}.runtime_deps"
|
||||
_archive_manifest = "$_pkg_out_dir/${pkg.archive_filename}.archive_manifest"
|
||||
_build_ids_file = "$_pkg_out_dir/ids.txt"
|
||||
_meta_far_file = "$_pkg_out_dir/meta.far"
|
||||
_combined_far_file = "$_pkg_out_dir/${pkg.package_name}-0.far"
|
||||
_final_far_file = "$_pkg_out_dir/${pkg.package_name}.far"
|
||||
_final_far_file = "$_pkg_out_dir/${pkg.archive_filename}.far"
|
||||
_package_info_path = "$_pkg_out_dir/package"
|
||||
|
||||
if (defined(pkg.component_name_override)) {
|
||||
|
@ -4,7 +4,9 @@
|
||||
|
||||
assert(is_fuchsia)
|
||||
|
||||
import("//build/buildflag_header.gni")
|
||||
import("//build/config/fuchsia/fidl_library.gni")
|
||||
import("//fuchsia/release_channel.gni")
|
||||
|
||||
fidl_library("cast_fidl") {
|
||||
library_name = "cast"
|
||||
|
@ -4,8 +4,10 @@
|
||||
|
||||
assert(is_fuchsia)
|
||||
|
||||
import("//build/buildflag_header.gni")
|
||||
import("//build/config/fuchsia/fidl_library.gni")
|
||||
import("//build/config/fuchsia/generate_runner_scripts.gni")
|
||||
import("//fuchsia/release_channel.gni")
|
||||
import("//testing/test.gni")
|
||||
|
||||
# Integration helpers for commonly used fuchsia.* APIs.
|
||||
@ -58,9 +60,18 @@ source_set("message_port") {
|
||||
]
|
||||
}
|
||||
|
||||
# Used to propagate release-qualified package names to integration test code.
|
||||
buildflag_header("release_channel_buildflags") {
|
||||
header = "release_channel.h"
|
||||
flags = [ "FUCHSIA_RELEASE_CHANNEL_SUFFIX=\"$release_channel_suffix\"" ]
|
||||
visibility = [ "//fuchsia/*" ]
|
||||
}
|
||||
|
||||
source_set("test_support") {
|
||||
testonly = true
|
||||
sources = [
|
||||
"context_provider_test_connector.cc",
|
||||
"context_provider_test_connector.h",
|
||||
"fake_component_context.cc",
|
||||
"fake_component_context.h",
|
||||
"fit_adapter.h",
|
||||
@ -77,6 +88,7 @@ source_set("test_support") {
|
||||
public_deps = [
|
||||
":base",
|
||||
":modular",
|
||||
":release_channel_buildflags",
|
||||
"//base",
|
||||
"//net",
|
||||
"//net:test_support",
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "fuchsia/engine/test/context_provider_test_connector.h"
|
||||
#include "fuchsia/base/context_provider_test_connector.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
@ -15,14 +15,19 @@
|
||||
#include "base/fuchsia/default_context.h"
|
||||
#include "base/fuchsia/fuchsia_logging.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/strings/strcat.h"
|
||||
#include "fuchsia/base/release_channel.h"
|
||||
|
||||
fuchsia::web::ContextProviderPtr StartWebEngineForTests(
|
||||
namespace cr_fuchsia {
|
||||
|
||||
fuchsia::web::ContextProviderPtr ConnectContextProvider(
|
||||
fidl::InterfaceRequest<fuchsia::sys::ComponentController>
|
||||
component_controller_request,
|
||||
const base::CommandLine& command_line) {
|
||||
fuchsia::sys::LaunchInfo launch_info;
|
||||
launch_info.url =
|
||||
"fuchsia-pkg://fuchsia.com/web_engine#meta/context_provider.cmx";
|
||||
launch_info.url = base::StrCat({"fuchsia-pkg://fuchsia.com/web_engine",
|
||||
BUILDFLAG(FUCHSIA_RELEASE_CHANNEL_SUFFIX),
|
||||
"#meta/context_provider.cmx"});
|
||||
launch_info.arguments = command_line.argv();
|
||||
|
||||
// Clone stderr from the current process to WebEngine and ask it to
|
||||
@ -51,3 +56,5 @@ fuchsia::web::ContextProviderPtr StartWebEngineForTests(
|
||||
web_engine_service_dir.Connect(context_provider.NewRequest());
|
||||
return context_provider;
|
||||
}
|
||||
|
||||
} // namespace cr_fuchsia
|
@ -2,8 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef FUCHSIA_ENGINE_TEST_CONTEXT_PROVIDER_TEST_CONNECTOR_H_
|
||||
#define FUCHSIA_ENGINE_TEST_CONTEXT_PROVIDER_TEST_CONNECTOR_H_
|
||||
#ifndef FUCHSIA_BASE_CONTEXT_PROVIDER_TEST_CONNECTOR_H_
|
||||
#define FUCHSIA_BASE_CONTEXT_PROVIDER_TEST_CONNECTOR_H_
|
||||
|
||||
#include <fuchsia/sys/cpp/fidl.h>
|
||||
#include <fuchsia/web/cpp/fidl.h>
|
||||
@ -11,10 +11,15 @@
|
||||
|
||||
#include "base/command_line.h"
|
||||
|
||||
fuchsia::web::ContextProviderPtr StartWebEngineForTests(
|
||||
namespace cr_fuchsia {
|
||||
|
||||
// TODO(crbug.com/1046615): Use test manifests for package specification.
|
||||
fuchsia::web::ContextProviderPtr ConnectContextProvider(
|
||||
fidl::InterfaceRequest<fuchsia::sys::ComponentController>
|
||||
component_controller_request,
|
||||
const base::CommandLine& command_line =
|
||||
base::CommandLine(base::CommandLine::NO_PROGRAM));
|
||||
|
||||
#endif // FUCHSIA_ENGINE_TEST_CONTEXT_PROVIDER_TEST_CONNECTOR_H_
|
||||
} // namespace cr_fuchsia
|
||||
|
||||
#endif // FUCHSIA_BASE_CONTEXT_PROVIDER_TEST_CONNECTOR_H_
|
@ -6,6 +6,7 @@ assert(is_fuchsia)
|
||||
|
||||
import("//build/config/fuchsia/generate_runner_scripts.gni")
|
||||
import("//build/config/fuchsia/symbol_archive.gni")
|
||||
import("//fuchsia/release_channel.gni")
|
||||
import("//mojo/public/tools/bindings/mojom.gni")
|
||||
import("//testing/test.gni")
|
||||
import("//tools/grit/repack.gni")
|
||||
@ -205,6 +206,8 @@ fuchsia_package("web_engine") {
|
||||
binary = ":web_engine_exe"
|
||||
manifest = "context_provider.cmx"
|
||||
component_name_override = "context_provider"
|
||||
package_name_override = "web_engine${release_channel_suffix}"
|
||||
archive_name_override = "web_engine"
|
||||
|
||||
excluded_files = [
|
||||
"lib/libswiftshader_libEGL.so",
|
||||
@ -300,8 +303,6 @@ test("web_engine_unittests") {
|
||||
test("web_engine_integration_tests") {
|
||||
manifest = "web_engine_integration_tests.cmx"
|
||||
sources = [
|
||||
"test/context_provider_test_connector.cc",
|
||||
"test/context_provider_test_connector.h",
|
||||
"test_debug_listener.cc",
|
||||
"test_debug_listener.h",
|
||||
"web_engine_debug_integration_test.cc",
|
||||
@ -318,7 +319,7 @@ test("web_engine_integration_tests") {
|
||||
]
|
||||
package_deps = [ [
|
||||
":web_engine",
|
||||
"web_engine",
|
||||
"web_engine${release_channel_suffix}",
|
||||
] ]
|
||||
}
|
||||
|
||||
|
@ -13,12 +13,12 @@
|
||||
#include "base/fuchsia/file_utils.h"
|
||||
#include "base/macros.h"
|
||||
#include "base/test/task_environment.h"
|
||||
#include "fuchsia/base/context_provider_test_connector.h"
|
||||
#include "fuchsia/base/fit_adapter.h"
|
||||
#include "fuchsia/base/frame_test_util.h"
|
||||
#include "fuchsia/base/result_receiver.h"
|
||||
#include "fuchsia/base/test_devtools_list_fetcher.h"
|
||||
#include "fuchsia/base/test_navigation_listener.h"
|
||||
#include "fuchsia/engine/test/context_provider_test_connector.h"
|
||||
#include "fuchsia/engine/test_debug_listener.h"
|
||||
#include "net/test/embedded_test_server/embedded_test_server.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
@ -38,7 +38,7 @@ class WebEngineDebugIntegrationTest : public testing::Test {
|
||||
|
||||
void SetUp() override {
|
||||
web_context_provider_ =
|
||||
StartWebEngineForTests(web_engine_controller_.NewRequest());
|
||||
cr_fuchsia::ConnectContextProvider(web_engine_controller_.NewRequest());
|
||||
web_context_provider_.set_error_handler(
|
||||
[](zx_status_t status) { ADD_FAILURE(); });
|
||||
|
||||
|
@ -17,12 +17,12 @@
|
||||
#include "base/macros.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/test/task_environment.h"
|
||||
#include "fuchsia/base/context_provider_test_connector.h"
|
||||
#include "fuchsia/base/fit_adapter.h"
|
||||
#include "fuchsia/base/frame_test_util.h"
|
||||
#include "fuchsia/base/result_receiver.h"
|
||||
#include "fuchsia/base/test_devtools_list_fetcher.h"
|
||||
#include "fuchsia/base/test_navigation_listener.h"
|
||||
#include "fuchsia/engine/test/context_provider_test_connector.h"
|
||||
#include "net/http/http_request_headers.h"
|
||||
#include "net/test/embedded_test_server/default_handlers.h"
|
||||
#include "net/test/embedded_test_server/embedded_test_server.h"
|
||||
@ -51,7 +51,7 @@ class WebEngineIntegrationTest : public testing::Test {
|
||||
|
||||
void StartWebEngine() {
|
||||
web_context_provider_ =
|
||||
StartWebEngineForTests(web_engine_controller_.NewRequest());
|
||||
cr_fuchsia::ConnectContextProvider(web_engine_controller_.NewRequest());
|
||||
web_context_provider_.set_error_handler(
|
||||
[](zx_status_t status) { ADD_FAILURE(); });
|
||||
}
|
||||
|
15
fuchsia/release_channel.gni
Normal file
15
fuchsia/release_channel.gni
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright 2020 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.
|
||||
|
||||
declare_args() {
|
||||
# Specifies the name of the release channel for specific packages
|
||||
# (web_engine, web_runner, cast_runner) when buildng on a release bot.
|
||||
fuchsia_release_channel = ""
|
||||
}
|
||||
|
||||
if (fuchsia_release_channel != "") {
|
||||
release_channel_suffix = "-${fuchsia_release_channel}"
|
||||
} else {
|
||||
release_channel_suffix = ""
|
||||
}
|
@ -7,6 +7,7 @@ assert(is_fuchsia)
|
||||
import("//build/buildflag_header.gni")
|
||||
import("//build/config/fuchsia/generate_runner_scripts.gni")
|
||||
import("//build/config/fuchsia/symbol_archive.gni")
|
||||
import("//fuchsia/release_channel.gni")
|
||||
import("//testing/test.gni")
|
||||
|
||||
declare_args() {
|
||||
@ -14,6 +15,9 @@ declare_args() {
|
||||
web_runner_remote_debugging_port = 0
|
||||
}
|
||||
|
||||
_cast_runner_package_name = "cast_runner${release_channel_suffix}"
|
||||
_web_runner_package_name = "web_runner${release_channel_suffix}"
|
||||
|
||||
buildflag_header("buildflags") {
|
||||
header = "buildflags.h"
|
||||
flags =
|
||||
@ -89,13 +93,14 @@ executable("cast_runner_exe") {
|
||||
|
||||
fuchsia_package("cast_runner_pkg") {
|
||||
binary = ":cast_runner_exe"
|
||||
package_name_override = "cast_runner"
|
||||
package_name_override = _cast_runner_package_name
|
||||
archive_name_override = "cast_runner"
|
||||
manifest = "cast/cast_runner.cmx"
|
||||
}
|
||||
|
||||
fuchsia_package_runner("cast_runner") {
|
||||
package = ":cast_runner_pkg"
|
||||
package_name_override = "cast_runner"
|
||||
archive_name_override = "cast_runner"
|
||||
install_only = true
|
||||
package_deps = [ [
|
||||
"//fuchsia/engine:web_engine",
|
||||
@ -193,13 +198,14 @@ executable("web_runner_exe") {
|
||||
|
||||
fuchsia_package("web_runner_pkg") {
|
||||
binary = ":web_runner_exe"
|
||||
package_name_override = "web_runner"
|
||||
package_name_override = _web_runner_package_name
|
||||
archive_name_override = "web_runner"
|
||||
manifest = "web/web_runner.cmx"
|
||||
}
|
||||
|
||||
fuchsia_package_runner("web_runner") {
|
||||
package = ":web_runner_pkg"
|
||||
package_name_override = "web_runner"
|
||||
archive_name_override = "web_runner"
|
||||
install_only = true
|
||||
package_deps = [ [
|
||||
"//fuchsia/engine:web_engine",
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "base/test/task_environment.h"
|
||||
#include "base/threading/sequenced_task_runner_handle.h"
|
||||
#include "fuchsia/base/agent_impl.h"
|
||||
#include "fuchsia/base/context_provider_test_connector.h"
|
||||
#include "fuchsia/base/fake_component_context.h"
|
||||
#include "fuchsia/base/fit_adapter.h"
|
||||
#include "fuchsia/base/frame_test_util.h"
|
||||
@ -246,6 +247,9 @@ class CastRunnerIntegrationTest : public testing::Test {
|
||||
cast_runner_ = std::make_unique<CastRunner>(
|
||||
std::move(create_context_params), &outgoing_directory_);
|
||||
|
||||
cast_runner_->SetContextProviderForTest(cr_fuchsia::ConnectContextProvider(
|
||||
context_provider_controller_.NewRequest()));
|
||||
|
||||
// Connect to the CastRunner's fuchsia.sys.Runner interface.
|
||||
fidl::InterfaceHandle<fuchsia::io::Directory> directory;
|
||||
outgoing_directory_.GetOrCreateDirectory("svc")->Serve(
|
||||
@ -299,6 +303,7 @@ class CastRunnerIntegrationTest : public testing::Test {
|
||||
|
||||
std::unique_ptr<CastRunner> cast_runner_;
|
||||
fuchsia::sys::RunnerPtr cast_runner_ptr_;
|
||||
fuchsia::sys::ComponentControllerPtr context_provider_controller_;
|
||||
};
|
||||
|
||||
// A basic integration test ensuring a basic cast request launches the right
|
||||
|
@ -38,19 +38,14 @@ WebContentRunner::WebContentRunner(fuchsia::web::ContextPtr context,
|
||||
|
||||
WebContentRunner::~WebContentRunner() = default;
|
||||
|
||||
// static
|
||||
fuchsia::web::ContextPtr WebContentRunner::CreateWebContext(
|
||||
fuchsia::web::CreateContextParams create_params) {
|
||||
auto web_context_provider = base::fuchsia::ComponentContextForCurrentProcess()
|
||||
->svc()
|
||||
->Connect<fuchsia::web::ContextProvider>();
|
||||
|
||||
fuchsia::web::ContextPtr web_context;
|
||||
web_context_provider->Create(std::move(create_params),
|
||||
GetContextProvider()->Create(std::move(create_params),
|
||||
web_context.NewRequest());
|
||||
web_context.set_error_handler([](zx_status_t status) {
|
||||
// If the browser instance died, then exit everything and do not attempt
|
||||
// to recover. appmgr will relaunch the runner when it is needed again.
|
||||
// If the browser instance died, then exit everything and do not attempt to
|
||||
// recover. appmgr will relaunch the runner when it is needed again.
|
||||
ZX_LOG(ERROR, status) << "Connection to Context lost.";
|
||||
});
|
||||
|
||||
@ -103,3 +98,18 @@ void WebContentRunner::RegisterComponent(
|
||||
|
||||
components_.insert(std::move(component));
|
||||
}
|
||||
|
||||
void WebContentRunner::SetContextProviderForTest(
|
||||
fuchsia::web::ContextProviderPtr context_provider) {
|
||||
DCHECK(context_provider);
|
||||
context_provider_ = std::move(context_provider);
|
||||
}
|
||||
|
||||
fuchsia::web::ContextProvider* WebContentRunner::GetContextProvider() {
|
||||
if (!context_provider_) {
|
||||
context_provider_ = base::fuchsia::ComponentContextForCurrentProcess()
|
||||
->svc()
|
||||
->Connect<fuchsia::web::ContextProvider>();
|
||||
}
|
||||
return context_provider_.get();
|
||||
}
|
||||
|
@ -35,7 +35,9 @@ class WebContentRunner : public fuchsia::sys::Runner {
|
||||
|
||||
~WebContentRunner() override;
|
||||
|
||||
static fuchsia::web::ContextPtr CreateWebContext(
|
||||
// TODO(crbug.com/1046615): Make this static when the injected ContextProvider
|
||||
// goes away.
|
||||
fuchsia::web::ContextPtr CreateWebContext(
|
||||
fuchsia::web::CreateContextParams create_params);
|
||||
|
||||
// Gets a pointer to this runner's Context, creating one if needed.
|
||||
@ -61,6 +63,11 @@ class WebContentRunner : public fuchsia::sys::Runner {
|
||||
// Registers a WebComponent, or specialization, with this Runner.
|
||||
void RegisterComponent(std::unique_ptr<WebComponent> component);
|
||||
|
||||
// Overrides the environment's the ContextProvider to use.
|
||||
// TODO(crbug.com/1046615): Use test manifests for package specification.
|
||||
void SetContextProviderForTest(
|
||||
fuchsia::web::ContextProviderPtr context_provider);
|
||||
|
||||
protected:
|
||||
base::RepeatingCallback<void(WebComponent*)>
|
||||
web_component_created_callback_for_test() const {
|
||||
@ -70,10 +77,13 @@ class WebContentRunner : public fuchsia::sys::Runner {
|
||||
fuchsia::web::CreateContextParams create_params_;
|
||||
|
||||
private:
|
||||
fuchsia::web::ContextProvider* GetContextProvider();
|
||||
|
||||
// If set, invoked whenever a WebComponent is created.
|
||||
base::RepeatingCallback<void(WebComponent*)>
|
||||
web_component_created_callback_for_test_;
|
||||
|
||||
fuchsia::web::ContextProviderPtr context_provider_;
|
||||
fuchsia::web::ContextPtr context_;
|
||||
std::set<std::unique_ptr<WebComponent>, base::UniquePtrComparator>
|
||||
components_;
|
||||
|
Reference in New Issue
Block a user