提交 6ed9eac4 编写于 作者: A Adam Barth 提交者: GitHub

Move more code out of //flutter/sky/engine (#2918)

* Move dart:mojo.internal to //flutter/lib/mojo

To be parallel with the other built-in libraries.

* Move DartRuntimeHooks into //flutter/lib/ui

This code manipulates natives.dart, which is part of //flutter/lib/ui.
上级 f8d80c46
# 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("mojo") {
sources = [
"dart_mojo_internal.cc",
"dart_mojo_internal.h",
]
deps = [
"//dart/runtime:libdart",
"//lib/ftl",
"//lib/tonic",
"//mojo/public/cpp/system",
"//mojo/public/platform/dart:mojo_internal_impl",
]
}
......@@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "flutter/sky/engine/bindings/dart_mojo_internal.h"
#include "flutter/lib/mojo/dart_mojo_internal.h"
#include "dart/runtime/include/dart_api.h"
#include "lib/tonic/logging/dart_error.h"
#include "lib/ftl/logging.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/logging/dart_error.h"
#include "mojo/public/platform/dart/mojo_natives.h"
using tonic::LogIfError;
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SKY_ENGINE_BINDINGS_DART_MOJO_INTERNAL_H_
#define SKY_ENGINE_BINDINGS_DART_MOJO_INTERNAL_H_
#ifndef FLUTTER_LIB_MOJO_DART_MOJO_INTERNAL_H_
#define FLUTTER_LIB_MOJO_DART_MOJO_INTERNAL_H_
#include "lib/ftl/macros.h"
#include "mojo/public/cpp/system/handle.h"
......@@ -22,4 +22,4 @@ class DartMojoInternal {
} // namespace blink
#endif // SKY_ENGINE_BINDINGS_DART_MOJO_INTERNAL_H_
#endif // FLUTTER_LIB_MOJO_DART_MOJO_INTERNAL_H_
......@@ -8,18 +8,20 @@ source_set("ui") {
"compositing/scene_builder.h",
"compositing/scene.cc",
"compositing/scene.h",
"dart_runtime_hooks.cc",
"dart_runtime_hooks.h",
"painting/canvas.cc",
"painting/canvas.h",
"painting/gradient.cc",
"painting/gradient.h",
"painting/image.cc",
"painting/image_decoding.cc",
"painting/image_decoding.h",
"painting/image_filter.cc",
"painting/image_filter.h",
"painting/image.h",
"painting/image_shader.cc",
"painting/image_shader.h",
"painting/image.cc",
"painting/image.h",
"painting/mask_filter.cc",
"painting/mask_filter.h",
"painting/matrix.cc",
......@@ -41,6 +43,7 @@ source_set("ui") {
]
deps = [
"//dart/runtime/bin:embedded_dart_io",
"//flutter/common",
"//flutter/flow",
"//flutter/glue",
......
......@@ -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/sky/engine/bindings/dart_runtime_hooks.h"
#include "flutter/lib/ui/dart_runtime_hooks.h"
#include <stdio.h>
#include <stdlib.h>
......@@ -11,8 +11,6 @@
#include "dart/runtime/bin/embedded_dart_io.h"
#include "dart/runtime/include/dart_api.h"
#include "dart/runtime/include/dart_tools_api.h"
#include "flutter/sky/engine/core/script/ui_dart_state.h"
#include "flutter/sky/engine/wtf/text/WTFString.h"
#include "lib/ftl/logging.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/dart_library_natives.h"
......@@ -47,8 +45,7 @@ namespace blink {
// the Mojo embedder dart, such as printing, and file I/O.
#define BUILTIN_NATIVE_LIST(V) \
V(Logger_PrintString, 1) \
V(ScheduleMicrotask, 1) \
V(GetBaseURLString, 0)
V(ScheduleMicrotask, 1)
BUILTIN_NATIVE_LIST(DECLARE_FUNCTION);
......@@ -93,7 +90,9 @@ static void InitDartInternal(Dart_Handle builtin_library,
}
}
static void InitDartCore(Dart_Handle builtin) {
static void InitDartCore(Dart_Handle builtin, const std::string& script_uri) {
DART_CHECK_VALID(
Dart_SetField(builtin, ToDart("_baseURL"), ToDart(script_uri)));
Dart_Handle get_base_url = GetClosure(builtin, "_getGetBaseURLClosure");
Dart_Handle core_library = Dart_LookupLibrary(ToDart("dart:core"));
DART_CHECK_VALID(
......@@ -136,7 +135,7 @@ void DartRuntimeHooks::Install(IsolateType isolate_type,
Dart_Handle builtin = Dart_LookupLibrary(ToDart("dart:ui"));
DART_CHECK_VALID(builtin);
InitDartInternal(builtin, isolate_type);
InitDartCore(builtin);
InitDartCore(builtin, script_uri);
InitDartAsync(builtin, isolate_type);
InitDartIo(script_uri);
}
......@@ -179,8 +178,4 @@ void ScheduleMicrotask(Dart_NativeArguments args) {
tonic::DartMicrotaskQueue::ScheduleMicrotask(closure);
}
void GetBaseURLString(Dart_NativeArguments args) {
Dart_SetReturnValue(args, ToDart(UIDartState::Current()->url()));
}
} // namespace blink
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SKY_ENGINE_BINDINGS_DART_RUNTIME_HOOKS_H_
#define SKY_ENGINE_BINDINGS_DART_RUNTIME_HOOKS_H_
#ifndef FLUTTER_LIB_UI_DART_RUNTIME_HOOKS_H_
#define FLUTTER_LIB_UI_DART_RUNTIME_HOOKS_H_
#include "dart/runtime/include/dart_api.h"
#include "lib/tonic/dart_library_natives.h"
......@@ -27,4 +27,4 @@ class DartRuntimeHooks {
} // namespace blink
#endif // SKY_ENGINE_BINDINGS_DART_RUNTIME_HOOKS_H_
#endif // FLUTTER_LIB_UI_DART_RUNTIME_HOOKS_H_
......@@ -20,8 +20,9 @@ void _setupHooks() {
}
void _scheduleMicrotask(void callback()) native "ScheduleMicrotask";
String _getBaseURLString() native "GetBaseURLString";
Uri _getBaseURL() => Uri.parse(_getBaseURLString());
String _baseURL;
Uri _getBaseURL() => Uri.parse(_baseURL);
// Required for gen_snapshot to work correctly.
int _isolateId;
......
......@@ -4,10 +4,6 @@
source_set("bindings") {
sources = [
"dart_mojo_internal.cc",
"dart_mojo_internal.h",
"dart_runtime_hooks.cc",
"dart_runtime_hooks.h",
"dart_ui.cc",
"dart_ui.h",
"flutter_dart_state.cc",
......@@ -16,14 +12,14 @@ source_set("bindings") {
"mojo_services.h",
]
defines = [ "DART_IO_SECURE_SOCKET_DISABLED" ]
deps = [
"//base",
"//dart/runtime:libdart",
"//dart/runtime/bin:embedded_dart_io",
"//flutter/assets",
"//flutter/lib/ui",
"//flutter/services/engine:interfaces",
"//flutter/sky/engine/core:prerequisites",
"//flutter/sky/engine/platform:platform",
"//flutter/sky/engine/wtf",
"//lib/tonic",
"//mojo/public/c/system",
"//mojo/public/cpp/application",
......@@ -31,10 +27,6 @@ source_set("bindings") {
"//mojo/public/cpp/system",
"//mojo/public/interfaces/application",
"//mojo/public/platform/dart:mojo_internal_impl",
"//flutter/sky/engine/core:prerequisites",
"//flutter/sky/engine/platform:platform",
"//flutter/sky/engine/wtf",
"//flutter/services/engine:interfaces",
]
if (is_android) {
......
......@@ -4,25 +4,25 @@
#include "flutter/sky/engine/bindings/dart_ui.h"
#include "flutter/lib/ui/compositing/scene.h"
#include "flutter/lib/ui/compositing/scene_builder.h"
#include "flutter/lib/ui/compositing/scene.h"
#include "flutter/lib/ui/dart_runtime_hooks.h"
#include "flutter/lib/ui/painting/canvas.h"
#include "flutter/lib/ui/painting/gradient.h"
#include "flutter/lib/ui/painting/image.h"
#include "flutter/lib/ui/painting/image_decoding.h"
#include "flutter/lib/ui/painting/image_filter.h"
#include "flutter/lib/ui/painting/image_shader.h"
#include "flutter/lib/ui/painting/image.h"
#include "flutter/lib/ui/painting/mask_filter.h"
#include "flutter/lib/ui/painting/path.h"
#include "flutter/lib/ui/painting/picture.h"
#include "flutter/lib/ui/painting/picture_recorder.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/logging/dart_error.h"
#include "flutter/sky/engine/bindings/dart_runtime_hooks.h"
#include "flutter/lib/ui/painting/picture.h"
#include "flutter/sky/engine/bindings/mojo_services.h"
#include "flutter/sky/engine/core/text/Paragraph.h"
#include "flutter/sky/engine/core/text/ParagraphBuilder.h"
#include "flutter/sky/engine/core/window/window.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/logging/dart_error.h"
using tonic::ToDart;
......
......@@ -17,9 +17,8 @@ namespace blink {
IsolateClient::~IsolateClient() {}
FlutterDartState::FlutterDartState(IsolateClient* isolate_client,
const std::string& url)
: isolate_client_(isolate_client), url_(url), main_port_(ILLEGAL_PORT) {
FlutterDartState::FlutterDartState(IsolateClient* isolate_client)
: isolate_client_(isolate_client), main_port_(ILLEGAL_PORT) {
#ifdef OS_ANDROID
jni_data_.reset(new DartJniIsolateData());
#endif
......@@ -34,7 +33,7 @@ FlutterDartState::~FlutterDartState() {
}
FlutterDartState* FlutterDartState::CreateForChildIsolate() {
return new FlutterDartState(isolate_client_, url_);
return new FlutterDartState(isolate_client_);
}
FlutterDartState* FlutterDartState::Current() {
......
......@@ -33,7 +33,6 @@ class FlutterDartState : public tonic::DartState {
void DidSetIsolate() override;
IsolateClient* isolate_client() { return isolate_client_; }
const std::string& url() const { return url_; }
static FlutterDartState* Current();
......@@ -47,11 +46,10 @@ class FlutterDartState : public tonic::DartState {
#endif
protected:
FlutterDartState(IsolateClient* isolate_client, const std::string& url);
FlutterDartState(IsolateClient* isolate_client);
private:
IsolateClient* isolate_client_;
std::string url_;
Dart_Port main_port_;
......
......@@ -14,7 +14,10 @@ source_set("libraries") {
"//flutter/flow",
"//flutter/glue",
"//flutter/lib/io",
"//flutter/lib/mojo",
"//flutter/lib/ui",
"//flutter/skia",
"//flutter/sky/engine/wtf",
"//lib/ftl",
"//lib/tonic",
"//lib/tonic/debugger",
......@@ -26,8 +29,6 @@ source_set("libraries") {
"//mojo/public/cpp/utility",
"//mojo/public/interfaces/application",
"//mojo/public/platform/dart:mojo_internal_impl",
"//flutter/skia",
"//flutter/sky/engine/wtf",
"//third_party/iccjpeg",
"//third_party/libpng",
"//third_party/qcms",
......
......@@ -11,8 +11,8 @@
#include "flutter/common/threads.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/lib/mojo/dart_mojo_internal.h"
#include "flutter/lib/ui/dart_runtime_hooks.h"
#include "flutter/sky/engine/bindings/dart_ui.h"
#include "flutter/sky/engine/core/script/dart_init.h"
#include "flutter/sky/engine/core/script/dart_service_isolate.h"
......@@ -135,10 +135,11 @@ void DartController::RunFromSource(const std::string& main,
exit(1);
}
void DartController::CreateIsolateFor(std::unique_ptr<UIDartState> state) {
void DartController::CreateIsolateFor(const std::string& script_uri,
std::unique_ptr<UIDartState> state) {
char* error = nullptr;
Dart_Isolate isolate = Dart_CreateIsolate(
state->url().c_str(), "main",
script_uri.c_str(), "main",
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotBuffer)),
nullptr, static_cast<tonic::DartState*>(state.get()), &error);
FTL_CHECK(isolate) << error;
......@@ -157,8 +158,7 @@ void DartController::CreateIsolateFor(std::unique_ptr<UIDartState> state) {
DartIO::InitForIsolate();
DartUI::InitForIsolate();
DartMojoInternal::InitForIsolate();
DartRuntimeHooks::Install(DartRuntimeHooks::MainIsolate,
ui_dart_state_->url().c_str());
DartRuntimeHooks::Install(DartRuntimeHooks::MainIsolate, script_uri);
dart_state()->class_library().add_provider(
"ui",
......
......@@ -25,7 +25,8 @@ class DartController {
void RunFromSnapshot(const uint8_t* buffer, size_t size);
void RunFromSource(const std::string& main, const std::string& packages);
void CreateIsolateFor(std::unique_ptr<UIDartState> ui_dart_state);
void CreateIsolateFor(const std::string& script_uri,
std::unique_ptr<UIDartState> ui_dart_state);
UIDartState* dart_state() const { return ui_dart_state_; }
......
......@@ -18,8 +18,8 @@
#include "flutter/common/settings.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/lib/mojo/dart_mojo_internal.h"
#include "flutter/lib/ui/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"
......@@ -190,7 +190,7 @@ Dart_Isolate ServiceIsolateCreateCallback(const char* script_uri,
DartIO::InitForIsolate();
DartUI::InitForIsolate();
DartMojoInternal::InitForIsolate();
DartRuntimeHooks::Install(DartRuntimeHooks::SecondaryIsolate, "");
DartRuntimeHooks::Install(DartRuntimeHooks::SecondaryIsolate, script_uri);
const Settings& settings = Settings::Get();
if (settings.enable_observatory) {
std::string ip = "127.0.0.1";
......
......@@ -10,9 +10,8 @@
namespace blink {
UIDartState::UIDartState(IsolateClient* isolate_client,
const std::string& url,
std::unique_ptr<Window> window)
: FlutterDartState(isolate_client, url), window_(std::move(window)) {}
: FlutterDartState(isolate_client), window_(std::move(window)) {}
UIDartState::~UIDartState() {}
......
......@@ -14,8 +14,7 @@ class Window;
class UIDartState : public FlutterDartState {
public:
UIDartState(IsolateClient* isolate_client, const std::string& url,
std::unique_ptr<Window> window);
UIDartState(IsolateClient* isolate_client, std::unique_ptr<Window> window);
~UIDartState() override;
Window* window() const { return window_.get(); }
......
......@@ -55,8 +55,9 @@ void SkyView::CreateView(const std::string& script_uri) {
DCHECK(!dart_controller_);
dart_controller_ = WTF::MakeUnique<DartController>();
dart_controller_->CreateIsolateFor(WTF::MakeUnique<UIDartState>(
this, script_uri, WTF::MakeUnique<Window>(this)));
dart_controller_->CreateIsolateFor(
script_uri,
WTF::MakeUnique<UIDartState>(this, WTF::MakeUnique<Window>(this)));
UIDartState* dart_state = dart_controller_->dart_state();
DartState::Scope scope(dart_state);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册