From 5f65a121adc8082bbd1c67dfdcca6d3a9647f254 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Tue, 9 Aug 2016 11:21:02 -0700 Subject: [PATCH] Remove //base dependency from engine.cc (#2891) We now just call stat directly to test whether a file exists. --- flutter/tonic/BUILD.gn | 5 ++ .../tonic}/dart_library_provider_files.cc | 6 +- .../tonic}/dart_library_provider_files.h | 2 +- sky/shell/BUILD.gn | 1 - sky/shell/dart/BUILD.gn | 21 ------- sky/shell/ui/engine.cc | 58 +++++++++---------- sky/shell/ui/engine.h | 1 - 7 files changed, 38 insertions(+), 56 deletions(-) rename {sky/shell/dart => flutter/tonic}/dart_library_provider_files.cc (96%) rename {sky/shell/dart => flutter/tonic}/dart_library_provider_files.h (95%) delete mode 100644 sky/shell/dart/BUILD.gn diff --git a/flutter/tonic/BUILD.gn b/flutter/tonic/BUILD.gn index 1620fa92b25..2aa1cac1c7b 100644 --- a/flutter/tonic/BUILD.gn +++ b/flutter/tonic/BUILD.gn @@ -16,6 +16,8 @@ source_set("tonic") { "dart_library_loader.h", "dart_library_provider.cc", "dart_library_provider.h", + "dart_library_provider_files.cc", + "dart_library_provider_files.h", "dart_snapshot_loader.cc", "dart_snapshot_loader.h", "dart_state.cc", @@ -23,8 +25,11 @@ source_set("tonic") { ] deps = [ + "//base", "//dart/runtime/bin:embedded_dart_io", "//glue", + "//lib/tonic/parsers", + "//mojo/data_pipe_utils", "//mojo/public/cpp/system", ] diff --git a/sky/shell/dart/dart_library_provider_files.cc b/flutter/tonic/dart_library_provider_files.cc similarity index 96% rename from sky/shell/dart/dart_library_provider_files.cc rename to flutter/tonic/dart_library_provider_files.cc index cdc3a587806..a8cd455b971 100644 --- a/sky/shell/dart/dart_library_provider_files.cc +++ b/flutter/tonic/dart_library_provider_files.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 "sky/shell/dart/dart_library_provider_files.h" +#include "flutter/tonic/dart_library_provider_files.h" #include "base/bind.h" #include "base/files/file_util.h" @@ -64,8 +64,8 @@ DartLibraryProviderFiles::DartLibraryProviderFiles() {} DartLibraryProviderFiles::~DartLibraryProviderFiles() {} -void DartLibraryProviderFiles::LoadPackagesMap(const base::FilePath& packages) { - packages_ = packages; +void DartLibraryProviderFiles::LoadPackagesMap(const std::string& packages) { + packages_ = base::FilePath(packages); std::string packages_source; if (!base::ReadFileToString(base::MakeAbsoluteFilePath(packages_), &packages_source)) { diff --git a/sky/shell/dart/dart_library_provider_files.h b/flutter/tonic/dart_library_provider_files.h similarity index 95% rename from sky/shell/dart/dart_library_provider_files.h rename to flutter/tonic/dart_library_provider_files.h index 24cade6da46..7746c5b60c2 100644 --- a/sky/shell/dart/dart_library_provider_files.h +++ b/flutter/tonic/dart_library_provider_files.h @@ -18,7 +18,7 @@ class DartLibraryProviderFiles : public blink::DartLibraryProvider { DartLibraryProviderFiles(); ~DartLibraryProviderFiles() override; - void LoadPackagesMap(const base::FilePath& packages); + void LoadPackagesMap(const std::string& packages); protected: // |DartLibraryProvider| implementation: diff --git a/sky/shell/BUILD.gn b/sky/shell/BUILD.gn index 3ebd2e0e577..fd952772db9 100644 --- a/sky/shell/BUILD.gn +++ b/sky/shell/BUILD.gn @@ -79,7 +79,6 @@ source_set("common") { "//sky/services/pointer:interfaces", "//sky/services/rasterizer:interfaces", "//sky/services/semantics:interfaces", - "//sky/shell/dart", ] } diff --git a/sky/shell/dart/BUILD.gn b/sky/shell/dart/BUILD.gn deleted file mode 100644 index cf562c87c0a..00000000000 --- a/sky/shell/dart/BUILD.gn +++ /dev/null @@ -1,21 +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. - -source_set("dart") { - sources = [ - "dart_library_provider_files.cc", - "dart_library_provider_files.h", - ] - - deps = [ - "//base", - "//build/config/sanitizers:deps", - "//dart/runtime:libdart", - "//flutter/tonic", - "//lib/tonic/parsers", - "//mojo/data_pipe_utils", - "//mojo/public/cpp/application", - "//sky/engine/wtf", - ] -} diff --git a/sky/shell/ui/engine.cc b/sky/shell/ui/engine.cc index 65687326602..651accc2f25 100644 --- a/sky/shell/ui/engine.cc +++ b/sky/shell/ui/engine.cc @@ -4,20 +4,20 @@ #include "sky/shell/ui/engine.h" -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/time/time.h" -#include "base/trace_event/trace_event.h" +#include + #include "flutter/assets/directory_asset_bundle.h" #include "flutter/assets/zip_asset_bundle.h" +#include "flutter/tonic/dart_library_provider_files.h" #include "glue/movable_wrapper.h" +#include "glue/trace_event.h" +#include "lib/ftl/files/path.h" #include "mojo/public/cpp/application/connect.h" #include "sky/engine/bindings/mojo_services.h" #include "sky/engine/core/script/dart_init.h" #include "sky/engine/core/script/ui_dart_state.h" #include "sky/engine/public/platform/Platform.h" #include "sky/engine/public/web/Sky.h" -#include "sky/shell/dart/dart_library_provider_files.h" #include "sky/shell/shell.h" #include "sky/shell/ui/animator.h" #include "sky/shell/ui/flutter_font_selector.h" @@ -29,6 +29,22 @@ namespace sky { namespace shell { namespace { +bool PathExists(const std::string& path) { + return access(path.c_str(), R_OK) == 0; +} + +std::string FindPackagesPath(const std::string& main_dart) { + std::string directory = files::GetDirectoryName(main_dart); + std::string packages_path = directory + "/.packages"; + if (!PathExists(packages_path)) { + directory = files::GetDirectoryName(directory); + packages_path = directory + "/.packages"; + if (!PathExists(packages_path)) + packages_path = std::string(); + } + return packages_path; +} + PlatformImpl* g_platform_impl = nullptr; } // namespace @@ -72,17 +88,9 @@ void Engine::RunFromSource(const std::string& main, // Assets. ConfigureDirectoryAssetBundle(assets_directory); // .packages. - base::FilePath packages_path = base::FilePath(std::string(packages)); - if (packages_path.empty()) { - base::FilePath main_dir = base::FilePath(main).DirName(); - packages_path = main_dir.Append(FILE_PATH_LITERAL(".packages")); - if (!base::PathExists(packages_path)) { - packages_path = main_dir.Append(base::FilePath::kParentDirectory) - .Append(FILE_PATH_LITERAL(".packages")); - if (!base::PathExists(packages_path)) - packages_path = base::FilePath(); - } - } + std::string packages_path = packages; + if (packages_path.empty()) + packages_path = FindPackagesPath(main); DartLibraryProviderFiles* provider = new DartLibraryProviderFiles(); dart_library_provider_.reset(provider); if (!packages_path.empty()) @@ -231,27 +239,19 @@ void Engine::RunFromFile(const mojo::String& main, const mojo::String& packages, const mojo::String& bundle) { TRACE_EVENT0("flutter", "Engine::RunFromFile"); - std::string main_str(main); + std::string main_dart(main); if (bundle.size() != 0) { // The specification of an FLX bundle is optional. ConfigureZipAssetBundle(bundle); } - base::FilePath packages_path = base::FilePath(std::string(packages)); - if (packages_path.empty()) { - base::FilePath main_dir = base::FilePath(main_str).DirName(); - packages_path = main_dir.Append(FILE_PATH_LITERAL(".packages")); - if (!base::PathExists(packages_path)) { - packages_path = main_dir.Append(base::FilePath::kParentDirectory) - .Append(FILE_PATH_LITERAL(".packages")); - if (!base::PathExists(packages_path)) - packages_path = base::FilePath(); - } - } + std::string packages_path = packages; + if (packages_path.empty()) + packages_path = FindPackagesPath(main_dart); DartLibraryProviderFiles* provider = new DartLibraryProviderFiles(); dart_library_provider_.reset(provider); if (!packages_path.empty()) provider->LoadPackagesMap(packages_path); - RunFromLibrary(main_str); + RunFromLibrary(main_dart); } void Engine::RunFromBundle(const mojo::String& script_uri, diff --git a/sky/shell/ui/engine.h b/sky/shell/ui/engine.h index 6cb56e813a1..4d71785793c 100644 --- a/sky/shell/ui/engine.h +++ b/sky/shell/ui/engine.h @@ -5,7 +5,6 @@ #ifndef SKY_SHELL_UI_ENGINE_H_ #define SKY_SHELL_UI_ENGINE_H_ -#include "base/files/file_path.h" #include "flutter/assets/zip_asset_store.h" #include "lib/ftl/macros.h" #include "lib/ftl/memory/weak_ptr.h"