| // 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. |
| |
| #ifndef UI_OZONE_PLATFORM_SCENIC_SCENIC_GPU_SERVICE_H_ |
| #define UI_OZONE_PLATFORM_SCENIC_SCENIC_GPU_SERVICE_H_ |
| |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "mojo/public/cpp/bindings/binding_set.h" |
| #include "ui/ozone/public/interfaces/scenic_gpu_host.mojom.h" |
| #include "ui/ozone/public/interfaces/scenic_gpu_service.mojom.h" |
| |
| namespace ui { |
| |
| // GPU process service that enables presentation to Scenic. |
| // |
| // This object exposes a mojo service to the browser process from the GPU |
| // process. The browser binds it to enable exchange of Scenic resources. |
| // In particular, we must exchange export tokens for each view surface, |
| // so that surfaces can present to Scenic views managed by the browser. |
| class ScenicGpuService : public mojom::ScenicGpuService { |
| public: |
| ScenicGpuService(); |
| ~ScenicGpuService() override; |
| |
| mojom::ScenicGpuHost* gpu_host() { return gpu_host_.get(); } |
| |
| base::RepeatingCallback<void(mojom::ScenicGpuServiceRequest)> |
| GetBinderCallback(); |
| |
| // mojom::ScenicGpuService: |
| void Initialize(mojom::ScenicGpuHostPtr gpu_host) override; |
| |
| private: |
| void AddBinding(mojom::ScenicGpuServiceRequest request); |
| |
| mojom::ScenicGpuHostPtr gpu_host_; |
| mojom::ScenicGpuHostRequest gpu_host_request_; |
| |
| mojo::BindingSet<mojom::ScenicGpuService> binding_set_; |
| |
| base::WeakPtrFactory<ScenicGpuService> weak_ptr_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ScenicGpuService); |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_OZONE_PLATFORM_SCENIC_SCENIC_GPU_SERVICE_H_ |