[scenic] web_view: view_provider->base_view
All topaz clients expose both the V1 and V2 ViewProvider interfaces,
prepping them for the full move to eventpairs.
No dependencies remain on ui/view_framework in web_view or web_runner.
TEST: set_root_view web_view
SCN-898 #comment
SCN-993 #comment
Change-Id: Iaeaa3deaaad30148a102c0fec086788a02d4f97f
diff --git a/runtime/web_runner_prototype/BUILD.gn b/runtime/web_runner_prototype/BUILD.gn
index 2bd767b..a3c25e2 100644
--- a/runtime/web_runner_prototype/BUILD.gn
+++ b/runtime/web_runner_prototype/BUILD.gn
@@ -21,6 +21,7 @@
public_deps = [
"//garnet/public/fidl/fuchsia.sys",
+ "//garnet/public/fidl/fuchsia.ui.app",
"//garnet/public/fidl/fuchsia.ui.viewsv1",
"//garnet/public/lib/component/cpp",
"//topaz/runtime/web_runner/services",
diff --git a/runtime/web_runner_prototype/component_controller.cc b/runtime/web_runner_prototype/component_controller.cc
index a5ca94a..e03a3d4 100644
--- a/runtime/web_runner_prototype/component_controller.cc
+++ b/runtime/web_runner_prototype/component_controller.cc
@@ -12,10 +12,15 @@
ComponentController::ComponentController(Runner* runner)
: runner_(runner), binding_(this) {
+ service_provider_.AddService<fuchsia::ui::app::ViewProvider>(
+ [this](fidl::InterfaceRequest<fuchsia::ui::app::ViewProvider> request) {
+ view_provider_bindings_.AddBinding(this, std::move(request));
+ });
+
service_provider_.AddService<fuchsia::ui::viewsv1::ViewProvider>(
[this](
fidl::InterfaceRequest<fuchsia::ui::viewsv1::ViewProvider> request) {
- view_provider_bindings_.AddBinding(this, std::move(request));
+ v1_view_provider_bindings_.AddBinding(this, std::move(request));
});
}
@@ -50,6 +55,15 @@
}
void ComponentController::CreateView(
+ zx::eventpair view_token,
+ fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> incoming_services,
+ fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> outgoing_services) {
+ CreateView(fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>(
+ zx::channel(view_token.release())),
+ std::move(incoming_services));
+}
+
+void ComponentController::CreateView(
fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner> view_owner,
fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> services) {
fuchsia::sys::ServiceProviderPtr view_services;
diff --git a/runtime/web_runner_prototype/component_controller.h b/runtime/web_runner_prototype/component_controller.h
index 8b6465e..575f721 100644
--- a/runtime/web_runner_prototype/component_controller.h
+++ b/runtime/web_runner_prototype/component_controller.h
@@ -6,6 +6,7 @@
#define TOPAZ_RUNTIME_WEB_RUNNER_PROTOTYPE_COMPONENT_CONTROLLER_H_
#include <fuchsia/sys/cpp/fidl.h>
+#include <fuchsia/ui/app/cpp/fidl.h>
#include <fuchsia/ui/viewsv1/cpp/fidl.h>
#include <fuchsia/webview/cpp/fidl.h>
@@ -17,9 +18,11 @@
#include "lib/svc/cpp/service_provider_bridge.h"
namespace web {
+
class Runner;
class ComponentController : public fuchsia::sys::ComponentController,
+ public fuchsia::ui::app::ViewProvider,
public fuchsia::ui::viewsv1::ViewProvider {
public:
explicit ComponentController(Runner* runner);
@@ -37,6 +40,13 @@
void Kill() final;
void Detach() final;
+ // |fuchsia::ui::app::ViewProvider|:
+ void CreateView(
+ zx::eventpair view_token,
+ fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> incoming_services,
+ fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> outgoing_services)
+ final;
+
// |fuchsia::ui::viewsv1::ViewProvider|:
void CreateView(
fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner> view_owner,
@@ -45,7 +55,9 @@
Runner* runner_;
component::ServiceProviderBridge service_provider_;
fidl::Binding<fuchsia::sys::ComponentController> binding_;
- fidl::BindingSet<fuchsia::ui::viewsv1::ViewProvider> view_provider_bindings_;
+ fidl::BindingSet<fuchsia::ui::app::ViewProvider> view_provider_bindings_;
+ fidl::BindingSet<fuchsia::ui::viewsv1::ViewProvider>
+ v1_view_provider_bindings_;
std::string url_;
fuchsia::sys::ComponentControllerPtr web_view_controller_;
diff --git a/runtime/web_runner_prototype/runner_unittest.cc b/runtime/web_runner_prototype/runner_unittest.cc
index d44e2fb..c271e77 100644
--- a/runtime/web_runner_prototype/runner_unittest.cc
+++ b/runtime/web_runner_prototype/runner_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <fuchsia/ui/app/cpp/fidl.h>
#include <fuchsia/ui/viewsv1/cpp/fidl.h>
#include <fuchsia/webview/cpp/fidl.h>
@@ -12,11 +13,13 @@
namespace web {
namespace testing {
-class FakeWebView : public fuchsia::ui::viewsv1::ViewProvider,
+class FakeWebView : public fuchsia::ui::app::ViewProvider,
+ public fuchsia::ui::viewsv1::ViewProvider,
public fuchsia::webview::WebView {
public:
FakeWebView() {
component_.AddPublicService(view_provider_bindings_.GetHandler(this));
+ component_.AddPublicService(v1_view_provider_bindings_.GetHandler(this));
service_provider_.AddService(web_view_bindings_.GetHandler(this));
}
@@ -24,12 +27,23 @@
component_.Register("web_view", fake_launcher);
}
+ // |fuchsia::ui::app::ViewProvider|:
+ void CreateView(
+ zx::eventpair view_token,
+ fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> incoming_services,
+ fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> outgoing_services)
+ final {
+ ++create_view_count_;
+ service_provider_.AddBinding(std::move(incoming_services));
+ }
+
// |fuchsia::ui::viewsv1::ViewProvider|:
void CreateView(
- fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner> view_owner,
+ fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
+ view_owner_request,
fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> services) final {
- ++create_view_count_;
- service_provider_.AddBinding(std::move(services));
+ CreateView(zx::eventpair(view_owner_request.TakeChannel().release()),
+ std::move(services), nullptr);
}
// |fuchsia::webview::WebView|:
@@ -46,7 +60,9 @@
private:
component::testing::FakeComponent component_;
- fidl::BindingSet<fuchsia::ui::viewsv1::ViewProvider> view_provider_bindings_;
+ fidl::BindingSet<fuchsia::ui::app::ViewProvider> view_provider_bindings_;
+ fidl::BindingSet<fuchsia::ui::viewsv1::ViewProvider>
+ v1_view_provider_bindings_;
fidl::BindingSet<fuchsia::webview::WebView> web_view_bindings_;
component::ServiceProviderImpl service_provider_;
};
diff --git a/runtime/web_view/BUILD.gn b/runtime/web_view/BUILD.gn
index 041d791..a56d960 100644
--- a/runtime/web_view/BUILD.gn
+++ b/runtime/web_view/BUILD.gn
@@ -7,9 +7,9 @@
import("//topaz/runtime/web_view/config.gni")
if (enable_chromium_based_web_runner) {
-# If chromium is the web runner, we don't need any of these targets.
-# Leave empty build & package targets for package configurations that still
-# reference these.
+ # If chromium is the web runner, we don't need any of these targets.
+ # Leave empty build & package targets for package configurations that still
+ # reference these.
package("web_view") {
deprecated_system_image = true
# Empty
@@ -38,11 +38,12 @@
deps = [
":webkit",
"//garnet/public/fidl/fuchsia.math",
+ "//garnet/public/fidl/fuchsia.ui.app",
"//garnet/public/fidl/fuchsia.ui.viewsv1",
"//garnet/public/lib/component/cpp",
"//garnet/public/lib/fxl",
"//garnet/public/lib/icu_data/cpp",
- "//garnet/public/lib/ui/view_framework:view_provider",
+ "//garnet/public/lib/ui/base_view/cpp",
"//garnet/public/lib/url",
"//peridot/lib/rapidjson",
"//peridot/public/fidl/fuchsia.modular",
diff --git a/runtime/web_view/tests/web_view_provider_test_module.cc b/runtime/web_view/tests/web_view_provider_test_module.cc
index 8dd2004..9178bc4 100644
--- a/runtime/web_view/tests/web_view_provider_test_module.cc
+++ b/runtime/web_view/tests/web_view_provider_test_module.cc
@@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <fuchsia/ui/app/cpp/fidl.h>
+#include <fuchsia/ui/viewsv1/cpp/fidl.h>
+
#include <lib/app_driver/cpp/module_driver.h>
#include <lib/async-loop/cpp/loop.h>
#include <lib/fsl/vmo/strings.h>
@@ -19,9 +22,9 @@
// root/null Link) back into an output link ("output_url").
class TestModule : fuchsia::modular::LinkWatcher {
public:
- TestModule(modular::ModuleHost* const module_host,
+ TestModule(modular::ModuleHost* module_host,
fidl::InterfaceRequest<
- fuchsia::ui::viewsv1::ViewProvider> /*view_provider_request*/)
+ fuchsia::ui::app::ViewProvider> /*view_provider_request*/)
: module_host_(module_host),
module_context_(module_host_->module_context()),
output_url_link_watcher_binding_(this) {
@@ -29,6 +32,13 @@
StartTest();
}
+ TestModule(modular::ModuleHost* const module_host,
+ fidl::InterfaceRequest<
+ fuchsia::ui::viewsv1::ViewProvider> /*view_provider_request*/)
+ : TestModule(
+ module_host,
+ fidl::InterfaceRequest<fuchsia::ui::app::ViewProvider>(nullptr)) {}
+
// Step 1: Start `web_view` and give it a URL (via root link), and setup
// observation for output URL (via "output_url" link).
void StartTest() {
@@ -118,4 +128,4 @@
[&loop] { loop.Quit(); });
loop.Run();
return 0;
-}
\ No newline at end of file
+}
diff --git a/runtime/web_view/web_view_impl.cpp b/runtime/web_view/web_view_impl.cpp
index 97eaeff..e2a8edc 100644
--- a/runtime/web_view/web_view_impl.cpp
+++ b/runtime/web_view/web_view_impl.cpp
@@ -63,16 +63,10 @@
}
}
-WebViewImpl::WebViewImpl(
- fuchsia::ui::viewsv1::ViewManagerPtr view_manager,
- fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
- view_owner_request,
- fuchsia::ui::input::ImeServicePtr ime_service,
- fidl::InterfaceRequest<fuchsia::sys::ServiceProvider>
- outgoing_services_request,
- const std::string& url)
- : BaseView(std::move(view_manager), std::move(view_owner_request),
- "WebView"),
+WebViewImpl::WebViewImpl(scenic::ViewContext view_context,
+ fuchsia::ui::input::ImeServicePtr ime_service,
+ const std::string& url)
+ : V1BaseView(std::move(view_context), "WebView"),
ime_service_(std::move(ime_service)),
ime_client_binding_(this),
weak_factory_(this),
@@ -85,7 +79,7 @@
web_view_.setup_once();
std::function<void(bool)> focusDelegate = [=](bool focused) {
- this->HandleWebRequestsFocusEvent(focused);
+ this->HandleWebRequestsFocusEvent(focused);
};
web_view_.setInputFocusDelegate(focusDelegate);
@@ -93,26 +87,23 @@
SetNeedSquareMetrics(true);
parent_node().AddChild(image_cycler_);
- if (outgoing_services_request) {
- // Expose |WebView| interface to caller
- outgoing_services_.AddService<fuchsia::webview::WebView>(
- [this](fidl::InterfaceRequest<fuchsia::webview::WebView> request) {
- FXL_LOG(INFO) << "web view service request";
- web_view_interface_bindings_.AddBinding(this, std::move(request));
- });
- outgoing_services_.AddBinding(std::move(outgoing_services_request));
- }
+ // Expose |WebView| interface to caller.
+ outgoing_services().AddService<fuchsia::webview::WebView>(
+ [this](fidl::InterfaceRequest<fuchsia::webview::WebView> request) {
+ FXL_LOG(INFO) << "web view service request";
+ web_view_interface_bindings_.AddBinding(this, std::move(request));
+ });
- async::PostTask(async_get_default_dispatcher(), ([weak = weak_factory_.GetWeakPtr()]() {
+ async::PostTask(async_get_default_dispatcher(),
+ ([weak = weak_factory_.GetWeakPtr()]() {
if (weak)
weak->CallIdle();
}));
}
-WebViewImpl::~WebViewImpl() {}
-
void WebViewImpl::HandleWebRequestsFocusEvent(bool focused) {
- FXL_LOG(INFO) << "WebView: web requests input focus:" << (focused ? "focused" : "unfocused");
+ FXL_LOG(INFO) << "WebView: web requests input focus:"
+ << (focused ? "focused" : "unfocused");
web_requests_input_ = focused;
UpdateInputConnection();
}
@@ -125,9 +116,10 @@
ime_client_binding_.Bind(client_ptr.NewRequest());
auto state = fuchsia::ui::input::TextInputState{};
state.text = "";
- ime_service_->GetInputMethodEditor(fuchsia::ui::input::KeyboardType::TEXT, fuchsia::ui::input::InputMethodAction::SEND,
- std::move(state), std::move(client_ptr),
- ime_.NewRequest());
+ ime_service_->GetInputMethodEditor(
+ fuchsia::ui::input::KeyboardType::TEXT,
+ fuchsia::ui::input::InputMethodAction::SEND, std::move(state),
+ std::move(client_ptr), ime_.NewRequest());
} else if (ime_client_binding_.is_bound()) {
ime_service_->HideKeyboard();
ime_client_binding_.Unbind();
@@ -136,7 +128,7 @@
// |fuchsia::ui::input::InputMethodEditorClient|
void WebViewImpl::DidUpdateState(fuchsia::ui::input::TextInputState state,
- fuchsia::ui::input::InputEventPtr event) {
+ fuchsia::ui::input::InputEventPtr event) {
if (event != nullptr && event->is_keyboard() && has_scenic_focus_) {
HandleKeyboardEvent(*event);
}
@@ -158,8 +150,6 @@
}
}
-
-
// |WebView|:
void WebViewImpl::SetUrl(fidl::StringPtr url) {
url_ = url;
@@ -266,13 +256,14 @@
}
}
-void WebViewImpl::HandleFocusEvent(const fuchsia::ui::input::FocusEvent& focus) {
+void WebViewImpl::HandleFocusEvent(
+ const fuchsia::ui::input::FocusEvent& focus) {
has_scenic_focus_ = focus.focused;
web_view_.setFocused(focus.focused);
UpdateInputConnection();
}
-// |BaseView|:
+// |scenic::V1BaseView|
bool WebViewImpl::OnInputEvent(fuchsia::ui::input::InputEvent event) {
bool handled = false;
web_view_.setVisible(true);
@@ -296,7 +287,7 @@
return handled;
}
-// |BaseView|:
+// |scenic::V1BaseView|
void WebViewImpl::OnSceneInvalidated(
fuchsia::images::PresentationInfo presentation_info) {
if (!has_physical_size())
@@ -346,7 +337,8 @@
void WebViewImpl::CallIdle() {
web_view_.iterateEventLoop();
InvalidateScene();
- async::PostTask(async_get_default_dispatcher(), ([weak = weak_factory_.GetWeakPtr()]() {
+ async::PostTask(async_get_default_dispatcher(),
+ ([weak = weak_factory_.GetWeakPtr()]() {
if (weak)
weak->CallIdle();
}));
diff --git a/runtime/web_view/web_view_impl.h b/runtime/web_view/web_view_impl.h
index 4828bb4..17545d1 100644
--- a/runtime/web_view/web_view_impl.h
+++ b/runtime/web_view/web_view_impl.h
@@ -5,15 +5,15 @@
#ifndef TOPAZ_RUNTIME_WEB_VIEW_WEB_VIEW_IMPL_H_
#define TOPAZ_RUNTIME_WEB_VIEW_WEB_VIEW_IMPL_H_
-#include <fuchsia/webview/cpp/fidl.h>
#include <fuchsia/ui/input/cpp/fidl.h>
+#include <fuchsia/webview/cpp/fidl.h>
#include "lib/component/cpp/service_provider_impl.h"
#include "lib/fidl/cpp/binding_set.h"
#include "lib/fxl/macros.h"
#include "lib/fxl/memory/weak_ptr.h"
+#include "lib/ui/base_view/cpp/v1_base_view.h"
#include "lib/ui/scenic/cpp/host_image_cycler.h"
-#include "lib/ui/view_framework/base_view.h"
#ifdef EXPERIMENTAL_WEB_ENTITY_EXTRACTION
#include "topaz/runtime/web_view/schema_org_context.h"
@@ -36,18 +36,14 @@
bool is_drag_;
};
-class WebViewImpl : public mozart::BaseView, public fuchsia::webview::WebView,
+class WebViewImpl : public scenic::V1BaseView,
+ public fuchsia::webview::WebView,
fuchsia::ui::input::InputMethodEditorClient {
public:
- WebViewImpl(fuchsia::ui::viewsv1::ViewManagerPtr view_manager,
- fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
- view_owner_request,
+ WebViewImpl(scenic::ViewContext view_context,
fuchsia::ui::input::ImeServicePtr ime_service,
- fidl::InterfaceRequest<fuchsia::sys::ServiceProvider>
- outgoing_services_request,
const std::string& url);
-
- ~WebViewImpl();
+ ~WebViewImpl() = default;
#ifdef EXPERIMENTAL_WEB_ENTITY_EXTRACTION
void set_context_writer(fuchsia::modular::ContextWriterPtr context_writer) {
@@ -85,10 +81,8 @@
void HandleWebRequestsFocusEvent(bool focused);
void UpdateInputConnection();
- // |BaseView|:
+ // |scenic::V1BaseView|
bool OnInputEvent(fuchsia::ui::input::InputEvent event) override;
-
- // |BaseView|:
void OnSceneInvalidated(
fuchsia::images::PresentationInfo presentation_info) override;
@@ -99,7 +93,8 @@
::WebView web_view_;
fuchsia::ui::input::ImeServicePtr ime_service_;
fuchsia::ui::input::InputMethodEditorPtr ime_ = nullptr;
- fidl::Binding<fuchsia::ui::input::InputMethodEditorClient> ime_client_binding_;
+ fidl::Binding<fuchsia::ui::input::InputMethodEditorClient>
+ ime_client_binding_;
fxl::WeakPtrFactory<WebViewImpl> weak_factory_;
bool url_set_ = false;
bool has_scenic_focus_ = false;
diff --git a/runtime/web_view/web_view_provider.cpp b/runtime/web_view/web_view_provider.cpp
index 00697ec..a8c6643 100644
--- a/runtime/web_view/web_view_provider.cpp
+++ b/runtime/web_view/web_view_provider.cpp
@@ -13,6 +13,7 @@
: loop_(loop),
url_(url),
context_(component::StartupContext::CreateFromStartupInfo()),
+ old_view_provider_binding_(this),
view_provider_binding_(this),
lifecycle_binding_(this),
main_link_watcher_binding_(this) {
@@ -21,11 +22,17 @@
FXL_LOG(WARNING) << "Could not load ICU data";
}
- context_->outgoing().AddPublicService<fuchsia::ui::viewsv1::ViewProvider>(
- [this](fidl::InterfaceRequest<ViewProvider> request) {
+ context_->outgoing().AddPublicService<fuchsia::ui::app::ViewProvider>(
+ [this](fidl::InterfaceRequest<fuchsia::ui::app::ViewProvider> request) {
FXL_LOG(INFO) << "Add ViewProvider binding";
view_provider_binding_.Bind(std::move(request));
});
+ context_->outgoing().AddPublicService<fuchsia::ui::viewsv1::ViewProvider>(
+ [this](
+ fidl::InterfaceRequest<fuchsia::ui::viewsv1::ViewProvider> request) {
+ FXL_LOG(INFO) << "Add V1 ViewProvider binding";
+ old_view_provider_binding_.Bind(std::move(request));
+ });
context_->outgoing().AddPublicService<fuchsia::modular::Lifecycle>(
[this](fidl::InterfaceRequest<fuchsia::modular::Lifecycle> request) {
FXL_LOG(INFO) << "got request for lifecycle service";
@@ -50,17 +57,26 @@
}
void WebViewProvider::CreateView(
- fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
- view_owner_request,
- fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> view_services) {
+ zx::eventpair view_token,
+ fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> incoming_services,
+ fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> outgoing_services) {
FXL_LOG(INFO) << "CreateView";
FXL_DCHECK(!view_);
+
+ auto scenic =
+ context_->ConnectToEnvironmentService<fuchsia::ui::scenic::Scenic>();
+ scenic::ViewContext view_context = {
+ .session_and_listener_request =
+ scenic::CreateScenicSessionPtrAndListenerRequest(scenic.get()),
+ .view_token = std::move(view_token),
+ .incoming_services = std::move(incoming_services),
+ .outgoing_services = std::move(outgoing_services),
+ .startup_context = context_.get(),
+ };
view_ = std::make_unique<WebViewImpl>(
- context_
- ->ConnectToEnvironmentService<fuchsia::ui::viewsv1::ViewManager>(),
- std::move(view_owner_request),
+ std::move(view_context),
context_->ConnectToEnvironmentService<fuchsia::ui::input::ImeService>(),
- std::move(view_services), url_);
+ url_);
#ifdef EXPERIMENTAL_WEB_ENTITY_EXTRACTION
if (context_writer_) {
view_->set_context_writer(std::move(context_writer_));
@@ -76,6 +92,14 @@
});
}
+void WebViewProvider::CreateView(
+ fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
+ view_owner_request,
+ fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> view_services) {
+ CreateView(zx::eventpair(view_owner_request.TakeChannel().release()),
+ std::move(view_services), nullptr);
+}
+
void WebViewProvider::Terminate() { loop_->Quit(); }
void WebViewProvider::Notify(fuchsia::mem::Buffer json) {
diff --git a/runtime/web_view/web_view_provider.h b/runtime/web_view/web_view_provider.h
index 3f7b40d..a353f12 100644
--- a/runtime/web_view/web_view_provider.h
+++ b/runtime/web_view/web_view_provider.h
@@ -6,13 +6,15 @@
#define TOPAZ_RUNTIME_WEB_VIEW_WEB_VIEW_PROVIDER_H_
#include <fuchsia/modular/cpp/fidl.h>
+#include <fuchsia/ui/app/cpp/fidl.h>
#include <fuchsia/ui/viewsv1/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
#include "lib/component/cpp/startup_context.h"
#include "topaz/runtime/web_view/web_view_impl.h"
-class WebViewProvider : fuchsia::ui::viewsv1::ViewProvider,
+class WebViewProvider : fuchsia::ui::app::ViewProvider,
+ fuchsia::ui::viewsv1::ViewProvider,
fuchsia::modular::Lifecycle,
fuchsia::modular::LinkWatcher {
public:
@@ -20,6 +22,13 @@
private:
// |ViewProvider|
+ void CreateView(
+ zx::eventpair view_token,
+ fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> incoming_services,
+ fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> outgoing_services)
+ override;
+
+ // |ViewProvider|
void CreateView(fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
view_owner_request,
fidl::InterfaceRequest<fuchsia::sys::ServiceProvider>
@@ -37,7 +46,8 @@
std::unique_ptr<WebViewImpl> view_;
// Link state, used to gather URL updates for the story
fuchsia::modular::LinkPtr main_link_;
- fidl::Binding<ViewProvider> view_provider_binding_;
+ fidl::Binding<fuchsia::ui::viewsv1::ViewProvider> old_view_provider_binding_;
+ fidl::Binding<fuchsia::ui::app::ViewProvider> view_provider_binding_;
fidl::Binding<fuchsia::modular::Lifecycle> lifecycle_binding_;
fidl::Binding<fuchsia::modular::LinkWatcher> main_link_watcher_binding_;
fuchsia::modular::ModuleContextPtr module_context_;