| Index: chrome/browser/chromeos/arc/gpu_arc_video_service_host.cc
|
| diff --git a/chrome/browser/chromeos/arc/gpu_arc_video_service_host.cc b/chrome/browser/chromeos/arc/gpu_arc_video_service_host.cc
|
| deleted file mode 100644
|
| index 1d9f58782b526cd25308bf53fcd37583baec4319..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/arc/gpu_arc_video_service_host.cc
|
| +++ /dev/null
|
| @@ -1,156 +0,0 @@
|
| -// Copyright 2016 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 "chrome/browser/chromeos/arc/gpu_arc_video_service_host.h"
|
| -
|
| -#include <string>
|
| -#include <utility>
|
| -
|
| -#include "base/location.h"
|
| -#include "base/logging.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "components/arc/arc_bridge_service.h"
|
| -#include "components/arc/common/video_accelerator.mojom.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/gpu_service_registry.h"
|
| -#include "mojo/edk/embedder/embedder.h"
|
| -#include "mojo/edk/embedder/platform_channel_pair.h"
|
| -#include "mojo/public/cpp/bindings/strong_binding.h"
|
| -#include "services/service_manager/public/cpp/interface_provider.h"
|
| -
|
| -namespace arc {
|
| -
|
| -namespace {
|
| -
|
| -void DeprecatedConnectToVideoAcceleratorServiceOnIOThread(
|
| - mojom::VideoAcceleratorServiceClientRequest request) {
|
| - // Note |request| is not a ServiceRequest. It is a ClientRequest but doesn't
|
| - // request for a Client. Instead, it requests for a Service while specified
|
| - // the client. It works this odd way because the interfaces were modeled as
|
| - // arc's "Host notifies to Instance::Init", not mojo's typical "Client
|
| - // registers to Service".
|
| - // TODO(kcwu): revise the interface.
|
| - content::GetGpuRemoteInterfaces()->GetInterface(std::move(request));
|
| -}
|
| -
|
| -void ConnectToVideoAcceleratorServiceOnIOThread(
|
| - mojom::VideoAcceleratorServiceRequest request) {
|
| - content::GetGpuRemoteInterfaces()->GetInterface(std::move(request));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory {
|
| - public:
|
| - VideoAcceleratorFactoryService() = default;
|
| -
|
| - void Create(mojom::VideoAcceleratorServiceRequest request) override {
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&ConnectToVideoAcceleratorServiceOnIOThread,
|
| - base::Passed(&request)));
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryService);
|
| -};
|
| -
|
| -GpuArcVideoServiceHost::GpuArcVideoServiceHost(ArcBridgeService* bridge_service)
|
| - : ArcService(bridge_service), binding_(this) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - arc_bridge_service()->video()->AddObserver(this);
|
| -}
|
| -
|
| -GpuArcVideoServiceHost::~GpuArcVideoServiceHost() {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - arc_bridge_service()->video()->RemoveObserver(this);
|
| -}
|
| -
|
| -void GpuArcVideoServiceHost::OnInstanceReady() {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - auto* video_instance =
|
| - arc_bridge_service()->video()->GetInstanceForMethod("Init");
|
| - DCHECK(video_instance);
|
| - video_instance->Init(binding_.CreateInterfacePtrAndBind());
|
| -}
|
| -
|
| -void GpuArcVideoServiceHost::DeprecatedOnRequestArcVideoAcceleratorChannel(
|
| - const DeprecatedOnRequestArcVideoAcceleratorChannelCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| -
|
| - // Hardcode pid 0 since it is unused in mojo.
|
| - const base::ProcessHandle kUnusedChildProcessHandle =
|
| - base::kNullProcessHandle;
|
| - mojo::edk::PlatformChannelPair channel_pair;
|
| - std::string child_token = mojo::edk::GenerateRandomToken();
|
| - mojo::edk::ChildProcessLaunched(kUnusedChildProcessHandle,
|
| - channel_pair.PassServerHandle(), child_token);
|
| -
|
| - MojoHandle wrapped_handle;
|
| - MojoResult wrap_result = mojo::edk::CreatePlatformHandleWrapper(
|
| - channel_pair.PassClientHandle(), &wrapped_handle);
|
| - if (wrap_result != MOJO_RESULT_OK) {
|
| - LOG(ERROR) << "Pipe failed to wrap handles. Closing: " << wrap_result;
|
| - callback.Run(mojo::ScopedHandle(), std::string());
|
| - return;
|
| - }
|
| - mojo::ScopedHandle child_handle{mojo::Handle(wrapped_handle)};
|
| -
|
| - std::string token = mojo::edk::GenerateRandomToken();
|
| - mojo::ScopedMessagePipeHandle server_pipe =
|
| - mojo::edk::CreateParentMessagePipe(token, child_token);
|
| - if (!server_pipe.is_valid()) {
|
| - LOG(ERROR) << "Invalid pipe";
|
| - callback.Run(mojo::ScopedHandle(), std::string());
|
| - return;
|
| - }
|
| - callback.Run(std::move(child_handle), token);
|
| -
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(
|
| - &DeprecatedConnectToVideoAcceleratorServiceOnIOThread,
|
| - base::Passed(mojo::MakeRequest<mojom::VideoAcceleratorServiceClient>(
|
| - std::move(server_pipe)))));
|
| -}
|
| -
|
| -void GpuArcVideoServiceHost::OnBootstrapVideoAcceleratorFactory(
|
| - const OnBootstrapVideoAcceleratorFactoryCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| -
|
| - // Hardcode pid 0 since it is unused in mojo.
|
| - const base::ProcessHandle kUnusedChildProcessHandle =
|
| - base::kNullProcessHandle;
|
| - mojo::edk::PlatformChannelPair channel_pair;
|
| - std::string child_token = mojo::edk::GenerateRandomToken();
|
| - mojo::edk::ChildProcessLaunched(kUnusedChildProcessHandle,
|
| - channel_pair.PassServerHandle(), child_token);
|
| -
|
| - MojoHandle wrapped_handle;
|
| - MojoResult wrap_result = mojo::edk::CreatePlatformHandleWrapper(
|
| - channel_pair.PassClientHandle(), &wrapped_handle);
|
| - if (wrap_result != MOJO_RESULT_OK) {
|
| - LOG(ERROR) << "Pipe failed to wrap handles. Closing: " << wrap_result;
|
| - callback.Run(mojo::ScopedHandle(), std::string());
|
| - return;
|
| - }
|
| - mojo::ScopedHandle child_handle{mojo::Handle(wrapped_handle)};
|
| -
|
| - std::string token = mojo::edk::GenerateRandomToken();
|
| - mojo::ScopedMessagePipeHandle server_pipe =
|
| - mojo::edk::CreateParentMessagePipe(token, child_token);
|
| - if (!server_pipe.is_valid()) {
|
| - LOG(ERROR) << "Invalid pipe";
|
| - callback.Run(mojo::ScopedHandle(), std::string());
|
| - return;
|
| - }
|
| - callback.Run(std::move(child_handle), token);
|
| -
|
| - mojo::MakeStrongBinding(base::MakeUnique<VideoAcceleratorFactoryService>(),
|
| - mojo::MakeRequest<mojom::VideoAcceleratorFactory>(
|
| - std::move(server_pipe)));
|
| -}
|
| -
|
| -} // namespace arc
|
|
|