flutter_flutter/engine/src/flutter/shell/common/run_configuration.cc
Jia Hao f03cc19612 Add flutter prefix to import (flutter/engine#49793)
This keeps things consistent with other imports and fixes the internal breakage (b/320443454).

While the build system here is able to handle imports both with and without the flutter prefix, the internal mechanism that rewrites these imports is currently unable to handle the latter case.
2024-01-16 16:11:19 +00:00

110 lines
3.3 KiB
C++

// Copyright 2013 The Flutter 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/shell/common/run_configuration.h"
#include <sstream>
#include <utility>
#include "flutter/assets/directory_asset_bundle.h"
#include "flutter/common/graphics/persistent_cache.h"
#include "flutter/fml/file.h"
#include "flutter/fml/unique_fd.h"
#include "flutter/runtime/dart_vm.h"
#include "flutter/runtime/isolate_configuration.h"
namespace flutter {
RunConfiguration RunConfiguration::InferFromSettings(
const Settings& settings,
const fml::RefPtr<fml::TaskRunner>& io_worker,
IsolateLaunchType launch_type) {
auto asset_manager = std::make_shared<AssetManager>();
if (fml::UniqueFD::traits_type::IsValid(settings.assets_dir)) {
asset_manager->PushBack(std::make_unique<DirectoryAssetBundle>(
fml::Duplicate(settings.assets_dir), true));
}
asset_manager->PushBack(std::make_unique<DirectoryAssetBundle>(
fml::OpenDirectory(settings.assets_path.c_str(), false,
fml::FilePermission::kRead),
true));
return {IsolateConfiguration::InferFromSettings(settings, asset_manager,
io_worker, launch_type),
asset_manager};
}
RunConfiguration::RunConfiguration(
std::unique_ptr<IsolateConfiguration> configuration)
: RunConfiguration(std::move(configuration),
std::make_shared<AssetManager>()) {
PersistentCache::SetAssetManager(asset_manager_);
}
RunConfiguration::RunConfiguration(
std::unique_ptr<IsolateConfiguration> configuration,
std::shared_ptr<AssetManager> asset_manager)
: isolate_configuration_(std::move(configuration)),
asset_manager_(std::move(asset_manager)) {
PersistentCache::SetAssetManager(asset_manager_);
}
RunConfiguration::RunConfiguration(RunConfiguration&&) = default;
RunConfiguration::~RunConfiguration() = default;
bool RunConfiguration::IsValid() const {
return asset_manager_ && isolate_configuration_;
}
bool RunConfiguration::AddAssetResolver(
std::unique_ptr<AssetResolver> resolver) {
if (!resolver || !resolver->IsValid()) {
return false;
}
asset_manager_->PushBack(std::move(resolver));
return true;
}
void RunConfiguration::SetEntrypoint(std::string entrypoint) {
entrypoint_ = std::move(entrypoint);
}
void RunConfiguration::SetEntrypointAndLibrary(std::string entrypoint,
std::string library) {
SetEntrypoint(std::move(entrypoint));
entrypoint_library_ = std::move(library);
}
void RunConfiguration::SetEntrypointArgs(
std::vector<std::string> entrypoint_args) {
entrypoint_args_ = std::move(entrypoint_args);
}
std::shared_ptr<AssetManager> RunConfiguration::GetAssetManager() const {
return asset_manager_;
}
const std::string& RunConfiguration::GetEntrypoint() const {
return entrypoint_;
}
const std::string& RunConfiguration::GetEntrypointLibrary() const {
return entrypoint_library_;
}
const std::vector<std::string>& RunConfiguration::GetEntrypointArgs() const {
return entrypoint_args_;
}
std::unique_ptr<IsolateConfiguration>
RunConfiguration::TakeIsolateConfiguration() {
return std::move(isolate_configuration_);
}
} // namespace flutter