// 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_RUNTIME_DART_CONTROLLER_H_ #define FLUTTER_RUNTIME_DART_CONTROLLER_H_ #include #include "dart/runtime/include/dart_api.h" #include "lib/ftl/macros.h" #include "lib/tonic/logging/dart_error.h" namespace blink { class UIDartState; class DartController { public: DartController(); ~DartController(); void RunFromPrecompiledSnapshot(); void RunFromSnapshot(const uint8_t* buffer, size_t size); tonic::DartErrorHandleType RunFromSource(const std::string& main, const std::string& packages); void CreateIsolateFor(const std::string& script_uri, std::unique_ptr ui_dart_state); UIDartState* dart_state() const { return ui_dart_state_; } private: bool SendStartMessage(Dart_Handle root_library); // The DartState associated with the main isolate. This will be deleted // during isolate shutdown. UIDartState* ui_dart_state_; FTL_DISALLOW_COPY_AND_ASSIGN(DartController); }; } #endif // FLUTTER_RUNTIME_DART_CONTROLLER_H_