| // Copyright 2018 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 "ui/platform_window/fuchsia/initialize_presenter_api_view.h" |
| |
| #include <fuchsia/ui/policy/cpp/fidl.h> |
| #include <lib/zx/eventpair.h> |
| |
| #include "base/fuchsia/fuchsia_logging.h" |
| #include "base/fuchsia/service_directory_client.h" |
| |
| namespace ui { |
| namespace fuchsia { |
| |
| void InitializeViewTokenAndPresentView( |
| ui::PlatformWindowInitProperties* window_properties_out) { |
| DCHECK(window_properties_out); |
| |
| // Generate and set the view tokens for the |window_properties_out| and the |
| // Presenter API. |
| zx::eventpair view_holder_token; |
| zx_status_t status = zx::eventpair::create( |
| /* options = */ 0, &window_properties_out->view_token.value, |
| &view_holder_token); |
| ZX_CHECK(status == ZX_OK, status) << "zx_eventpair_create"; |
| |
| // Request Presenter to show the view full-screen. |
| auto presenter = base::fuchsia::ServiceDirectoryClient::ForCurrentProcess() |
| ->ConnectToService<::fuchsia::ui::policy::Presenter>(); |
| |
| presenter->Present2(std::move(view_holder_token), nullptr); |
| } |
| |
| } // namespace fuchsia |
| } // namespace ui |