• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "flutter/shell/platform/embedder/embedder_platform_message_response.h"
6 
7 #include "flutter/fml/make_copyable.h"
8 
9 namespace flutter {
10 
EmbedderPlatformMessageResponse(fml::RefPtr<fml::TaskRunner> runner,Callback callback)11 EmbedderPlatformMessageResponse::EmbedderPlatformMessageResponse(
12     fml::RefPtr<fml::TaskRunner> runner,
13     Callback callback)
14     : runner_(std::move(runner)), callback_(callback) {}
15 
16 EmbedderPlatformMessageResponse::~EmbedderPlatformMessageResponse() = default;
17 
18 // |PlatformMessageResponse|
Complete(std::unique_ptr<fml::Mapping> data)19 void EmbedderPlatformMessageResponse::Complete(
20     std::unique_ptr<fml::Mapping> data) {
21   if (!data) {
22     CompleteEmpty();
23     return;
24   }
25 
26   runner_->PostTask(
27       fml::MakeCopyable([data = std::move(data), callback = callback_]() {
28         callback(data->GetMapping(), data->GetSize());
29       }));
30 }
31 
32 // |PlatformMessageResponse|
CompleteEmpty()33 void EmbedderPlatformMessageResponse::CompleteEmpty() {
34   Complete(std::make_unique<fml::NonOwnedMapping>(nullptr, 0u));
35 }
36 
37 }  // namespace flutter
38