Commit ef0b4a27 authored by Michael Spang's avatar Michael Spang Committed by Commit Bot

ozone: demo: Add support for passing fuchsia view owner request

Running on scenic requires passing a
fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner> to
CreatePlatformWindow().

Bug: 861853
Test: ozone_demo --ozone-platform=scenic --enable-vulkan (with full series)

Change-Id: I948a4408d64dcb8fef1ec28a55437a48e6ec4a54
Reviewed-on: https://chromium-review.googlesource.com/1188973
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: default avatarSergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#586310}
parent 622ac8ad
...@@ -37,6 +37,10 @@ source_set("ozone_demo_lib") { ...@@ -37,6 +37,10 @@ source_set("ozone_demo_lib") {
"//ui/ozone", "//ui/ozone",
"//ui/platform_window", "//ui/platform_window",
] ]
if (is_fuchsia) {
deps += [ "//third_party/fuchsia-sdk:policy" ]
}
} }
executable("ozone_demo") { executable("ozone_demo") {
......
...@@ -14,6 +14,11 @@ ...@@ -14,6 +14,11 @@
#include "ui/platform_window/platform_window.h" #include "ui/platform_window/platform_window.h"
#include "ui/platform_window/platform_window_init_properties.h" #include "ui/platform_window/platform_window_init_properties.h"
#if defined(OS_FUCHSIA)
#include <fuchsia/ui/policy/cpp/fidl.h>
#include "base/fuchsia/component_context.h"
#endif
namespace ui { namespace ui {
DemoWindow::DemoWindow(WindowManager* window_manager, DemoWindow::DemoWindow(WindowManager* window_manager,
...@@ -24,6 +29,24 @@ DemoWindow::DemoWindow(WindowManager* window_manager, ...@@ -24,6 +29,24 @@ DemoWindow::DemoWindow(WindowManager* window_manager,
weak_ptr_factory_(this) { weak_ptr_factory_(this) {
PlatformWindowInitProperties properties; PlatformWindowInitProperties properties;
properties.bounds = bounds; properties.bounds = bounds;
#if defined(OS_FUCHSIA)
// When using Scenic Ozone platform we need to supply a ViewOwner request to
// the window. This is not necessary when using the headless ozone platform.
if (ui::OzonePlatform::GetInstance()
->GetPlatformProperties()
.needs_view_owner_request) {
// Initialize view_owner_request for the new instance.
fidl::InterfaceHandle<fuchsia::ui::viewsv1token::ViewOwner> view_owner;
properties.view_owner_request = view_owner.NewRequest();
// Request Presenter to show the view full-screen.
auto presenter = base::fuchsia::ComponentContext::GetDefault()
->ConnectToService<fuchsia::ui::policy::Presenter>();
presenter->Present(std::move(view_owner), nullptr);
}
#endif
platform_window_ = OzonePlatform::GetInstance()->CreatePlatformWindow( platform_window_ = OzonePlatform::GetInstance()->CreatePlatformWindow(
this, std::move(properties)); this, std::move(properties));
platform_window_->Show(); platform_window_->Show();
......
...@@ -66,6 +66,7 @@ ScenicWindowCanvas::~ScenicWindowCanvas() { ...@@ -66,6 +66,7 @@ ScenicWindowCanvas::~ScenicWindowCanvas() {
void ScenicWindowCanvas::ResizeCanvas(const gfx::Size& viewport_size) { void ScenicWindowCanvas::ResizeCanvas(const gfx::Size& viewport_size) {
viewport_size_ = viewport_size; viewport_size_ = viewport_size;
viewport_size_.SetToMax(gfx::Size(1, 1));
ScenicSession* scenic = window_->scenic_session(); ScenicSession* scenic = window_->scenic_session();
......
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