From 855e471c1f40348acb6a134af846d7750c1b3c9e Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Fri, 12 Aug 2016 09:42:32 -0700 Subject: [PATCH] Almost remove //flutter/tonic (#2916) All that's left is two task runners, which should be statics somewhere. --- DEPS | 2 +- lib/io/BUILD.gn | 17 +++ {tonic => lib/io}/dart_io.cc | 2 +- {tonic => lib/io}/dart_io.h | 0 lib/ui/BUILD.gn | 1 + lib/ui/painting/image_decoding.cc | 2 +- sky/engine/core/BUILD.gn | 4 +- sky/engine/core/script/dart_controller.cc | 4 +- sky/engine/core/script/dart_init.cc | 24 ++-- sky/shell/ui/engine.cc | 1 - sky/shell/ui/engine.h | 1 - tonic/BUILD.gn | 4 - tonic/dart_debugger.cc | 139 ---------------------- tonic/dart_debugger.h | 72 ----------- 14 files changed, 38 insertions(+), 235 deletions(-) create mode 100644 lib/io/BUILD.gn rename {tonic => lib/io}/dart_io.cc (94%) rename {tonic => lib/io}/dart_io.h (100%) delete mode 100644 tonic/dart_debugger.cc delete mode 100644 tonic/dart_debugger.h diff --git a/DEPS b/DEPS index 629f439531..6442eb4553 100644 --- a/DEPS +++ b/DEPS @@ -55,7 +55,7 @@ deps = { Var('fuchsia_git') + '/ftl' + '@' + '0bb3a02301c8a88b494e58c6636fa509525adaa8', 'src/lib/tonic': - Var('fuchsia_git') + '/tonic' + '@' + '66fc8a71ae54c628537e7f4b2e8bf9304788c19d', + Var('fuchsia_git') + '/tonic' + '@' + 'e559b5fab4bad0fb528c68497a02df280f526c66', 'src/third_party/gtest': Var('fuchsia_git') + '/third_party/gtest' + '@' + 'c00f82917331efbbd27124b537e4ccc915a02b72', diff --git a/lib/io/BUILD.gn b/lib/io/BUILD.gn new file mode 100644 index 0000000000..602da2b08f --- /dev/null +++ b/lib/io/BUILD.gn @@ -0,0 +1,17 @@ +# 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. + +source_set("io") { + sources = [ + "dart_io.cc", + "dart_io.h", + ] + + deps = [ + "//dart/runtime:libdart", + "//dart/runtime/bin:embedded_dart_io", + "//lib/ftl", + "//lib/tonic/converter", + ] +} diff --git a/tonic/dart_io.cc b/lib/io/dart_io.cc similarity index 94% rename from tonic/dart_io.cc rename to lib/io/dart_io.cc index 5cb87a2e01..ffd7f1d528 100644 --- a/tonic/dart_io.cc +++ b/lib/io/dart_io.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "flutter/tonic/dart_io.h" +#include "flutter/lib/io/dart_io.h" #include "dart/runtime/bin/io_natives.h" #include "dart/runtime/include/dart_api.h" diff --git a/tonic/dart_io.h b/lib/io/dart_io.h similarity index 100% rename from tonic/dart_io.h rename to lib/io/dart_io.h diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index 276ef4fd5d..19cca97219 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -46,5 +46,6 @@ source_set("ui") { "//flutter/skia", "//flutter/tonic", "//lib/tonic", + "//lib/tonic/mojo", ] } diff --git a/lib/ui/painting/image_decoding.cc b/lib/ui/painting/image_decoding.cc index 56852c691c..76fa4e5617 100644 --- a/lib/ui/painting/image_decoding.cc +++ b/lib/ui/painting/image_decoding.cc @@ -14,7 +14,7 @@ #include "lib/ftl/tasks/task_runner.h" #include "lib/tonic/dart_persistent_value.h" #include "lib/tonic/logging/dart_invoke.h" -#include "lib/tonic/mojo_converter.h" +#include "lib/tonic/mojo/mojo_converter.h" #include "lib/tonic/typed_data/uint8_list.h" #include "third_party/skia/include/core/SkImageGenerator.h" diff --git a/sky/engine/core/BUILD.gn b/sky/engine/core/BUILD.gn index bcdc3a0e55..fe3672dc17 100644 --- a/sky/engine/core/BUILD.gn +++ b/sky/engine/core/BUILD.gn @@ -11,11 +11,13 @@ source_set("libraries") { public_deps = [ "//base", "//flutter/flow", + "//flutter/glue", + "//flutter/lib/io", "//flutter/lib/ui", "//flutter/tonic", - "//flutter/glue", "//lib/ftl", "//lib/tonic", + "//lib/tonic/debugger", "//mojo/application", "//mojo/data_pipe_utils", "//mojo/public/c/system", diff --git a/sky/engine/core/script/dart_controller.cc b/sky/engine/core/script/dart_controller.cc index beb2699f07..72fbc8a7fa 100644 --- a/sky/engine/core/script/dart_controller.cc +++ b/sky/engine/core/script/dart_controller.cc @@ -8,6 +8,7 @@ #include "dart/runtime/include/dart_tools_api.h" #include "flutter/glue/trace_event.h" +#include "flutter/lib/io/dart_io.h" #include "flutter/sky/engine/bindings/dart_mojo_internal.h" #include "flutter/sky/engine/bindings/dart_runtime_hooks.h" #include "flutter/sky/engine/bindings/dart_ui.h" @@ -17,14 +18,13 @@ #include "flutter/sky/engine/public/platform/Platform.h" #include "flutter/sky/engine/public/platform/sky_settings.h" #include "flutter/sky/engine/wtf/MakeUnique.h" -#include "flutter/tonic/dart_debugger.h" -#include "flutter/tonic/dart_io.h" #include "flutter/tonic/dart_state.h" #include "lib/ftl/files/directory.h" #include "lib/ftl/files/path.h" #include "lib/tonic/dart_class_library.h" #include "lib/tonic/dart_message_handler.h" #include "lib/tonic/dart_wrappable.h" +#include "lib/tonic/debugger/dart_debugger.h" #include "lib/tonic/file_loader/file_loader.h" #include "lib/tonic/logging/dart_error.h" #include "lib/tonic/logging/dart_invoke.h" diff --git a/sky/engine/core/script/dart_init.cc b/sky/engine/core/script/dart_init.cc index 41d80a8de1..c2e92e94cf 100644 --- a/sky/engine/core/script/dart_init.cc +++ b/sky/engine/core/script/dart_init.cc @@ -15,30 +15,30 @@ #include "dart/runtime/bin/embedded_dart_io.h" #include "dart/runtime/include/dart_mirrors_api.h" #include "flutter/assets/zip_asset_store.h" -#include "flutter/tonic/dart_debugger.h" -#include "flutter/tonic/dart_io.h" -#include "flutter/tonic/dart_state.h" #include "flutter/glue/trace_event.h" +#include "flutter/lib/io/dart_io.h" +#include "flutter/sky/engine/bindings/dart_mojo_internal.h" +#include "flutter/sky/engine/bindings/dart_runtime_hooks.h" +#include "flutter/sky/engine/bindings/dart_ui.h" +#include "flutter/sky/engine/core/script/dart_service_isolate.h" +#include "flutter/sky/engine/core/script/ui_dart_state.h" +#include "flutter/sky/engine/core/start_up.h" +#include "flutter/sky/engine/public/platform/sky_settings.h" +#include "flutter/sky/engine/wtf/MakeUnique.h" +#include "flutter/tonic/dart_state.h" #include "lib/ftl/files/eintr_wrapper.h" #include "lib/ftl/files/unique_fd.h" #include "lib/ftl/logging.h" #include "lib/ftl/time/time_delta.h" #include "lib/tonic/dart_class_library.h" #include "lib/tonic/dart_wrappable.h" +#include "lib/tonic/debugger/dart_debugger.h" #include "lib/tonic/logging/dart_error.h" #include "lib/tonic/logging/dart_invoke.h" #include "lib/tonic/scopes/dart_api_scope.h" #include "lib/tonic/scopes/dart_isolate_scope.h" #include "lib/tonic/typed_data/uint8_list.h" #include "mojo/public/platform/dart/dart_handle_watcher.h" -#include "flutter/sky/engine/bindings/dart_mojo_internal.h" -#include "flutter/sky/engine/bindings/dart_runtime_hooks.h" -#include "flutter/sky/engine/bindings/dart_ui.h" -#include "flutter/sky/engine/core/script/dart_service_isolate.h" -#include "flutter/sky/engine/core/script/ui_dart_state.h" -#include "flutter/sky/engine/core/start_up.h" -#include "flutter/sky/engine/public/platform/sky_settings.h" -#include "flutter/sky/engine/wtf/MakeUnique.h" #ifdef OS_ANDROID #include "flutter/lib/jni/dart_jni.h" @@ -561,7 +561,7 @@ void InitDartVM() { { TRACE_EVENT0("flutter", "DartDebugger::InitDebugger"); // This should be called before calling Dart_Initialize. - DartDebugger::InitDebugger(); + tonic::DartDebugger::InitDebugger(); } #endif diff --git a/sky/shell/ui/engine.cc b/sky/shell/ui/engine.cc index e219a48630..82ff076774 100644 --- a/sky/shell/ui/engine.cc +++ b/sky/shell/ui/engine.cc @@ -20,7 +20,6 @@ #include "flutter/sky/engine/core/script/ui_dart_state.h" #include "flutter/sky/engine/public/platform/Platform.h" #include "flutter/sky/engine/public/web/Sky.h" -#include "flutter/sky/shell/shell.h" #include "flutter/sky/shell/ui/animator.h" #include "flutter/sky/shell/ui/flutter_font_selector.h" #include "flutter/sky/shell/ui/platform_impl.h" diff --git a/sky/shell/ui/engine.h b/sky/shell/ui/engine.h index 949aa04e3e..4608d10034 100644 --- a/sky/shell/ui/engine.h +++ b/sky/shell/ui/engine.h @@ -11,7 +11,6 @@ #include "flutter/services/rasterizer/rasterizer.mojom.h" #include "flutter/sky/engine/public/sky/sky_view_client.h" #include "flutter/sky/engine/public/sky/sky_view.h" -#include "flutter/sky/shell/rasterizer.h" #include "flutter/sky/shell/ui_delegate.h" #include "lib/ftl/macros.h" #include "lib/ftl/memory/weak_ptr.h" diff --git a/tonic/BUILD.gn b/tonic/BUILD.gn index 61de7e7539..3a7d523d93 100644 --- a/tonic/BUILD.gn +++ b/tonic/BUILD.gn @@ -4,10 +4,6 @@ source_set("tonic") { sources = [ - "dart_debugger.cc", - "dart_debugger.h", - "dart_io.cc", - "dart_io.h", "dart_state.cc", "dart_state.h", ] diff --git a/tonic/dart_debugger.cc b/tonic/dart_debugger.cc deleted file mode 100644 index bfad4cfac8..0000000000 --- a/tonic/dart_debugger.cc +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2015 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/tonic/dart_debugger.h" - -#include "dart/runtime/include/dart_api.h" -#include "dart/runtime/include/dart_native_api.h" -#include "dart/runtime/include/dart_tools_api.h" -#include "lib/ftl/logging.h" - -namespace blink { - -void DartDebuggerIsolate::MessageLoop() { - ftl::MonitorLocker locker(&monitor_); - Dart_MessageNotifyCallback saved_message_notify_callback = - Dart_GetMessageNotifyCallback(); - // Request notification on isolate messages. This allows us to - // respond to vm service messages while at breakpoint. - Dart_SetMessageNotifyCallback(DartDebugger::NotifyIsolate); - while (true) { - // Handle all available vm service messages, up to a resume - // request. - bool resume = false; - while (!resume && Dart_HasServiceMessages()) { - monitor_.Exit(); - resume = Dart_HandleServiceMessages(); - monitor_.Enter(); - } - if (resume) { - break; - } - locker.Wait(); - } - Dart_SetMessageNotifyCallback(saved_message_notify_callback); -} - -void DartDebugger::BptResolvedHandler(Dart_IsolateId isolate_id, - intptr_t bp_id, - const Dart_CodeLocation& location) { - // Nothing to do here. Service event is dispatched to let Observatory know - // that a breakpoint was resolved. -} - -void DartDebugger::PausedEventHandler(Dart_IsolateId isolate_id, - intptr_t bp_id, - const Dart_CodeLocation& loc) { - Dart_EnterScope(); - intptr_t isolate_index = FindIsolateIndexById(isolate_id); - FTL_CHECK(isolate_index != -1); - (*isolates_)[isolate_index]->MessageLoop(); - Dart_ExitScope(); -} - -void DartDebugger::ExceptionThrownHandler(Dart_IsolateId isolate_id, - Dart_Handle exception, - Dart_StackTrace stack_trace) { - Dart_EnterScope(); - intptr_t isolate_index = FindIsolateIndexById(isolate_id); - FTL_CHECK(isolate_index != -1); - (*isolates_)[isolate_index]->MessageLoop(); - Dart_ExitScope(); -} - -void DartDebugger::IsolateEventHandler(Dart_IsolateId isolate_id, - Dart_IsolateEvent kind) { - Dart_EnterScope(); - if (kind == Dart_IsolateEvent::kCreated) { - AddIsolate(isolate_id); - } else { - intptr_t isolate_index = FindIsolateIndexById(isolate_id); - FTL_CHECK(isolate_index != -1); - if (kind == Dart_IsolateEvent::kInterrupted) { - (*isolates_)[isolate_index]->MessageLoop(); - } else { - FTL_CHECK(kind == Dart_IsolateEvent::kShutdown); - RemoveIsolate(isolate_id); - } - } - Dart_ExitScope(); -} - -void DartDebugger::NotifyIsolate(Dart_Isolate isolate) { - ftl::MutexLocker locker(mutex_); - Dart_IsolateId isolate_id = Dart_GetIsolateId(isolate); - intptr_t isolate_index = FindIsolateIndexByIdLocked(isolate_id); - if (isolate_index >= 0) { - (*isolates_)[isolate_index]->Notify(); - } -} - -void DartDebugger::InitDebugger() { - Dart_SetIsolateEventHandler(IsolateEventHandler); - Dart_SetPausedEventHandler(PausedEventHandler); - Dart_SetBreakpointResolvedHandler(BptResolvedHandler); - Dart_SetExceptionThrownHandler(ExceptionThrownHandler); - mutex_ = new ftl::Mutex(); - isolates_ = new std::vector>(); -} - -intptr_t DartDebugger::FindIsolateIndexById(Dart_IsolateId id) { - ftl::MutexLocker locker(mutex_); - return FindIsolateIndexByIdLocked(id); -} - -intptr_t DartDebugger::FindIsolateIndexByIdLocked(Dart_IsolateId id) { - mutex_->AssertHeld(); - for (size_t i = 0; i < isolates_->size(); i++) { - if ((*isolates_)[i]->id() == id) { - return i; - } - } - return -1; -} - -void DartDebugger::AddIsolate(Dart_IsolateId id) { - ftl::MutexLocker locker(mutex_); - FTL_CHECK(FindIsolateIndexByIdLocked(id) == -1); - std::unique_ptr debugger_isolate = - std::unique_ptr(new DartDebuggerIsolate(id)); - isolates_->push_back(std::move(debugger_isolate)); -} - -void DartDebugger::RemoveIsolate(Dart_IsolateId id) { - ftl::MutexLocker locker(mutex_); - for (size_t i = 0; i < isolates_->size(); i++) { - if (id == (*isolates_)[i]->id()) { - isolates_->erase(isolates_->begin() + i); - return; - } - } - FTL_NOTREACHED(); -} - -ftl::Mutex* DartDebugger::mutex_ = nullptr; -std::vector>* DartDebugger::isolates_ = - nullptr; - -} // namespace blink diff --git a/tonic/dart_debugger.h b/tonic/dart_debugger.h deleted file mode 100644 index 870e0f02eb..0000000000 --- a/tonic/dart_debugger.h +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2015 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 FLUTTER_TONIC_DART_DEBUGGER_H_ -#define FLUTTER_TONIC_DART_DEBUGGER_H_ - -#include -#include - -#include "dart/runtime/include/dart_api.h" -#include "dart/runtime/include/dart_native_api.h" -#include "dart/runtime/include/dart_tools_api.h" -#include "lib/ftl/synchronization/monitor.h" -#include "lib/ftl/synchronization/mutex.h" - -namespace blink { - -class DartDebuggerIsolate { - public: - DartDebuggerIsolate(Dart_IsolateId id) : id_(id) {} - - Dart_IsolateId id() const { return id_; } - - void Notify() { monitor_.Signal(); } - - void MessageLoop(); - - private: - const Dart_IsolateId id_; - ftl::Monitor monitor_; -}; - -class DartDebugger { - public: - static void InitDebugger(); - - private: - static void BptResolvedHandler(Dart_IsolateId isolate_id, - intptr_t bp_id, - const Dart_CodeLocation& location); - - static void PausedEventHandler(Dart_IsolateId isolate_id, - intptr_t bp_id, - const Dart_CodeLocation& loc); - - static void ExceptionThrownHandler(Dart_IsolateId isolate_id, - Dart_Handle exception, - Dart_StackTrace stack_trace); - - static void IsolateEventHandler(Dart_IsolateId isolate_id, - Dart_IsolateEvent kind); - - static void NotifyIsolate(Dart_Isolate isolate); - - static intptr_t FindIsolateIndexById(Dart_IsolateId id); - - static intptr_t FindIsolateIndexByIdLocked(Dart_IsolateId id); - - static void AddIsolate(Dart_IsolateId id); - - static void RemoveIsolate(Dart_IsolateId id); - - static ftl::Mutex* mutex_; - static std::vector>* isolates_; - - friend class DartDebuggerIsolate; -}; - -} // namespace blink - -#endif // FLUTTER_TONIC_DART_DEBUGGER_H_ -- GitLab