diff --git a/glue/BUILD.gn b/glue/BUILD.gn index dbefe5bff8ec893d5ef97a5d8e57852a8a91bf4e..81cc7893c76ac4e7bdcd3b5b5801fbc5c6986116 100644 --- a/glue/BUILD.gn +++ b/glue/BUILD.gn @@ -6,14 +6,9 @@ source_set("glue") { sources = [ "data_pipe_utils.cc", "data_pipe_utils.h", - "drain_data_pipe_job.cc", "drain_data_pipe_job.h", "movable_wrapper.h", - "stack_trace.cc", "stack_trace.h", - "task_runner_adaptor.cc", - "task_runner_adaptor.h", - "thread.cc", "thread.h", "trace_event.h", ] @@ -24,7 +19,25 @@ source_set("glue") { "//mojo/public/cpp/system", ] - if (!is_fuchsia) { + if (is_fuchsia) { + sources += [ + "drain_data_pipe_job_fuchsia.cc", + "stack_trace_fuchsia.cc", + "thread_fuchsia.cc", + ] + + deps += [ + "//lib/mtl", + ] + } else { + sources += [ + "drain_data_pipe_job_base.cc", + "stack_trace_base.cc", + "task_runner_adaptor.cc", + "task_runner_adaptor.h", + "thread_base.cc", + ] + deps += [ "//base", "//mojo/data_pipe_utils", diff --git a/glue/drain_data_pipe_job.cc b/glue/drain_data_pipe_job_base.cc similarity index 96% rename from glue/drain_data_pipe_job.cc rename to glue/drain_data_pipe_job_base.cc index 89c985b73b6823918902904df80ca32991208feb..2e01f710e6fd680ad638c966622d5f0af4f30724 100644 --- a/glue/drain_data_pipe_job.cc +++ b/glue/drain_data_pipe_job_base.cc @@ -29,7 +29,7 @@ class DrainDataPipeJob::JobImpl : public DataPipeDrainer::Client { std::vector buffer_; ResultCallback callback_; - mojo::common::DataPipeDrainer drainer_; + DataPipeDrainer drainer_; FTL_DISALLOW_COPY_AND_ASSIGN(JobImpl); }; diff --git a/glue/drain_data_pipe_job_fuchsia.cc b/glue/drain_data_pipe_job_fuchsia.cc new file mode 100644 index 0000000000000000000000000000000000000000..dc0cc4b8a739d8aa499edc0e8aa15379069b9fcc --- /dev/null +++ b/glue/drain_data_pipe_job_fuchsia.cc @@ -0,0 +1,43 @@ +// 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 "flutter/glue/drain_data_pipe_job.h" + +#include + +#include "lib/mtl/data_pipe/data_pipe_drainer.h" + +using mtl::DataPipeDrainer; + +namespace glue { + +class DrainDataPipeJob::JobImpl : public DataPipeDrainer::Client { + public: + explicit JobImpl(mojo::ScopedDataPipeConsumerHandle handle, + const ResultCallback& callback) + : callback_(callback), drainer_(this, std::move(handle)) {} + + private: + // mojo::common::DataPipeDrainer::Client + void OnDataAvailable(const void* data, size_t num_bytes) override { + const char* bytes = static_cast(data); + buffer_.insert(buffer_.end(), bytes, bytes + num_bytes); + } + + void OnDataComplete() override { callback_(std::move(buffer_)); } + + std::vector buffer_; + ResultCallback callback_; + DataPipeDrainer drainer_; + + FTL_DISALLOW_COPY_AND_ASSIGN(JobImpl); +}; + +DrainDataPipeJob::DrainDataPipeJob(mojo::ScopedDataPipeConsumerHandle handle, + const ResultCallback& callback) + : impl_(new JobImpl(std::move(handle), callback)) {} + +DrainDataPipeJob::~DrainDataPipeJob() {} + +} // namespace glue diff --git a/glue/stack_trace.cc b/glue/stack_trace_base.cc similarity index 100% rename from glue/stack_trace.cc rename to glue/stack_trace_base.cc diff --git a/glue/stack_trace_fuchsia.cc b/glue/stack_trace_fuchsia.cc new file mode 100644 index 0000000000000000000000000000000000000000..abd82c661d28c7fe664a95b4633a839763ee96c4 --- /dev/null +++ b/glue/stack_trace_fuchsia.cc @@ -0,0 +1,11 @@ +// 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 "flutter/glue/stack_trace.h" + +namespace glue { + +void PrintStackTrace() {} + +} // namespace glue diff --git a/glue/thread.cc b/glue/thread_base.cc similarity index 100% rename from glue/thread.cc rename to glue/thread_base.cc diff --git a/glue/thread_fuchsia.cc b/glue/thread_fuchsia.cc new file mode 100644 index 0000000000000000000000000000000000000000..61252c993af8faee88ae5d6dfdf1abdd0d88371f --- /dev/null +++ b/glue/thread_fuchsia.cc @@ -0,0 +1,27 @@ +// 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 "flutter/glue/thread.h" + +#include + +#include "lib/mtl/threading/create_thread.h" + +namespace glue { + +class Thread::ThreadImpl { + public: + std::thread thread_; +}; + +Thread::Thread(std::string name) : impl_(new ThreadImpl()) {} + +Thread::~Thread() {} + +bool Thread::Start() { + impl_->thread_ = mtl::CreateThread(&task_runner_); + return true; +} + +} // namespace glue